2013-07-08 42 views
0

我有一個數組,其中每個鍵值都包含用逗號分隔的圖片元信息。 有關的元信息A,B,C:根據值的任何部分保留數組中的鍵/值?

  • A表示圖象
  • B畫面的順序
  • C中的顏色的ID

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的值爲r向訪客呈現僅具有顏色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> 
+1

檢查[array_filter](http://php.net/manual/en/function.array-filter.php)和[爆炸](http://php.net/manual/en/function.explode.php ) – elclanrs

回答

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

假設你的數據ARRY被稱爲$picture_data。 我並不擔心格式,效率和元素的順序。

+0

多數民衆贊成,謝謝羅伯! – jam

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 
    } 
+0

Voitcus查看帖子更新 – jam

0

這裏有一個方法:

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

elclanrs - 編輯我的帖子,向你展示我想從這個數組mysteria中得到的結果。 – jam

相關問題