我有一个关联数组,如下所示:
$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元素时,会重复一些对。有没有办法做到这一点?
谢谢!
答案 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]]);
}
}