2010-06-09 75 views
0

我有一個關聯數組如下:嵌套foreach循環關聯數組組合

$myarray = array('a'=>array(), 'b'=>array(), 'c'=>array(), 'd'=>array()); 

我希望能夠讓所有對數組中的元素。如果它不是一個關聯數組,我會使用嵌套的for循環,如:

for($i=0; $i<count($myarray); $i++) { 
    for($j=$i+1; $j<count($myarray); $j++) { 
    do_something($myarray[$i], $myarray[$j]); 
    } 
} 

我已經看過了使用foreach循環,但隨着內部循環遍歷所有元素,對一些重複。有沒有辦法做到這一點?

謝謝!

+0

的關聯數組的鍵以任何方式排序? – SilentGhost 2010-06-09 16:00:54

回答

0

array_values()函數返回一個包含所有值的整數索引數組,因此您可以使用它來獲取可以用for循環的列表。

否則,你可以「破壞」的數組是這樣的:

while($k = array_pop($my_array)) { 
    foreach($my_array as $j){ 
    do_something($k, $j); 
    } 
} 
+0

謝謝,我認爲這給了我需要的線索。我使用array_keys()而不是array_values(),然後循環遍歷具有2個嵌套for循環的鍵。 成功! :) – JohnL 2010-06-09 16:25:35

0

嘗試:

$keys = array_keys($myarray); 
$c = count($myarray); 
foreach ($keys as $k => $key1) { 
    for ($i = $k + 1; $i < $c; $i ++) { 
     dosomething($myarray[$key1], $myarray[$keys[$i]]); 
    } 
}