0

我有一个数组,其中每个键值包含用逗号分隔的图片元信息。对于元信息 A、B、C:

  • A代表图片的ID
  • B 图片顺序
  • C 颜色

 Array ( 
    [0] => 657,1,1
    [1] => 658,2,1
    [2] => 659,3,1
    [3] => 875,15,3
    [4] => 869,9,2
    [5] => 872,12,2
    [6] => 959,13,2
)

我已经在询问如何找到 C 的唯一值,但现在我想过滤并返回一个仅具有特定颜色的数组 - C 值用于向访问者表示仅颜色为 3 的图像

我想通过循环遍历数组来实现这样的结果

<div class="smallgal" id="color-1">
    <img src="657.jpg"> 
    <img src="658.jpg">
    <img src="659.jpg">
</div>

<div class="smallgal" id="color-3">
    <img src="869.jpg"> 
    <img src="872.jpg">
    <img src="959.jpg">
</div>

<div class="smallgal" id="color-2">
    <img src="875.jpg"> 
</div>
4

3 回答 3

0

这将修改您的数组

foreach($elements as &$element){
  $colors = explode(',', $element);
  $element = $colors[count($colors)-1]; // it could be explicitly 2 perhaps
  }

这不会:

$c = array();
foreach($elements as $key=>$element){
  $colors = explode(',', $element);
  $c[$key] = $colors[count($colors)-1]; // the same, consider using 2
  }
于 2013-07-08T08:30:38.077 回答
0

这是一种方法:

$result = array_filter($array, function($val){
  return array_pop(explode(',',$val)) == 3;
});
于 2013-07-08T08:34:22.753 回答
0

你可以这样尝试:

    for ($i = 1; $i <= 3; $i++) { // Change that 3 if there are more colors
        echo '<div class="smallgal" id="color-'.$i.'">';
        foreach($picture_data as $value){
            $data = explode(',', $value);
            if ($data[2] == $i) {
                echo '<img src="'.$data[0].'.jpg">';
            }
        }
        echo '</div>';
}

假设您的数据数组被称为$picture_data. 我不担心格式、效率和元素的顺序。

于 2013-07-08T11:31:35.570 回答