Php 是否根据值的部分保留数组中的键/值?

Php 是否根据值的部分保留数组中的键/值?,php,arrays,filtering,Php,Arrays,Filtering,我有一个数组,其中每个键值包含图片的元信息,用逗号分隔。 对于元信息A、B、C: A表示图片的ID B图片的顺序 C颜色 我已经在问如何找到C的唯一值,但现在我想过滤掉并返回一个仅具有特定颜色的数组-C值,用于向访问者表示仅具有颜色3的f.e图像 我想通过在阵列中循环来实现这样的结果 <div class="smallgal" id="color-1"> <img src="657.jpg"> <img src="658.jpg">

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

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

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

我想通过在阵列中循环来实现这样的结果

<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>

这将修改您的阵列

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
  }
以下是一种方法:

$result = array_filter($array, function($val){
  return array_pop(explode(',',$val)) == 3;
});

您可以这样尝试:

    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>';
}

for($i=1;$i Check and elclanrs)-编辑我的帖子,向您展示我希望从这篇文章中获得的结果。
    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>';
}