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

发布于 2024-09-05 03:35:22 字数 424 浏览 4 评论 0原文

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

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

谢谢!

I have an associative array as follows:

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

I want to be able to get all pairs of elements in the array. If it wasn't an associative array, I would use nested for loops, like:

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

I have looked at using foreach loops, but as the inner loop goes through ALL elements, some pairs are repeated. Is there a way to do this?

Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

假装爱人 2024-09-12 03:35:22

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

否则你可以这样“销毁”数组:

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

The array_values() function returns an integer-indexed array containing all the values, so you can use it to obtain a list that you can iterate with a for.

Otherwise you can 'destroy' the array this way:

 while($k = array_pop($my_array)) {
   foreach($my_array as $j){ 
     do_something($k, $j);
   }
 }
递刀给你 2024-09-12 03:35:22

尝试:

$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]]);
    }
}

Try:

$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]]);
    }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文