用于关联数组组合的嵌套foreach循环

时间:2010-06-09 15:47:41

标签: php arrays associative-array

我有一个关联数组,如下所示:

$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循环,但是当内循环遍历ALL元素时,会重复一些对。有没有办法做到这一点?

谢谢!

2 个答案:

答案 0 :(得分:0)

array_values()函数返回一个包含所有值的整数索引数组,因此您可以使用它来获取可以使用for迭代的列表。

否则你可以这样'破坏'数组:

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

答案 1 :(得分: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]]);
    }
}