2012-09-22 90 views
-1

傢伙,我已經有了一個數組,多數民衆贊成這樣的:PHP順序的foreach

array(3) { 
    [2]=> 
    array(1) { 
     ["name"]=> 
     array(2) { 
     [0]=> 
     string(13) "row1" 
     [1]=> 
     string(13) "row3" 
     } 
    } 
    [5]=> 
    array(1) { 
     ["name"]=> 
     array(2) { 
     [0]=> 
     string(15) "row1" 
     [1]=> 
     string(15) "row3" 
     } 
    } 
    [3]=> 
    array(1) { 
     ["name"]=> 
     array(2) { 
     [0]=> 
     string(13) "row1" 
     [1]=> 
     string(13) "row3" 
     } 
    } 

我想要實現的是讓foreach循環的0元素(ROW1),然後遍歷1(ROW3)和去喜歡這個。有沒有辦法做到這一點?

+0

這看起來像查詢的結果。爲什麼不讓你的查詢返回正確的格式? – JvdBerg

+0

它不是一個查詢,它是一個瀏覽器輸入,我不能強制用戶正確地排列元素。 – Anonymous

回答

1

你可以嘗試重建陣列:

$rows = array(); 
foreach($array as $subarray) 
    foreach($subarray as $key => $value) 
    $rows[$key][] = $value; 

此時人從陣列相同的子元素是一起在一個新的數組,現在你可以很容易遍歷子元素:

foreach($rows as $key => $value) 
    echo 'processing row: ' . $key ' with value ' . $value; 
+0

問題是這是動態數組,它可能包含2個以上的字段,所以0/1不會將其剪切。 – Anonymous

+0

你沒有在你的問題中提到過。 – JvdBerg

+0

我調整了我的答案給你新的需求 – JvdBerg

0

我發現了一個不同的方法來解決這個問題,JvdBeg解決方案工作得很好,但是如果有人陷入了類似的情況,我就是這樣做的: $ key = key($ arr); $ keys = array_keys($ arr);

for ($i=0;$i<sizeof($arr[$key]['index']);$i++) { 
     for($k=0;$k<sizeof($arr);$k++) { 
     $key = $keys[$k]; 
     echo "\n"; 
     } 
    }