【问题标题】:Leave key/values from array based on the part of the value anybody?根据值的一部分从数组中保留键/值吗?
【发布时间】:2013-07-08 19:31:35
【问题描述】:

我有一个数组,其中每个键值包含用逗号分隔的图片元信息。 对于元信息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 的图像 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>

【问题讨论】:

标签: php arrays filtering


【解决方案1】:

你可以试试这个方法:

    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。 我不担心格式、效率和元素的顺序。

【讨论】:

    【解决方案2】:

    这会修改你的数组

    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
      }
    

    【讨论】:

      【解决方案3】:

      这是一种方法:

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

      【讨论】:

      • elclanrs - 编辑我的帖子,向您展示我想从这个神秘的数组中获得的结果。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-20
      • 2018-12-05
      • 2020-04-15
      • 2011-06-15
      • 2020-11-12
      相关资源
      最近更新 更多