如何避免循环内循环

How to avoid loop inside loop

我有这个代码:

foreach($categories as $category) {
  $items = getItems($category);

  foreach($items as $item) {
     // some code to manipulate $item
  }
}

如你所见,内循环依赖于外循环。问题是如果数据太大,这需要相当长的时间。有什么方法、算法或技术可以让我 避免依赖于外循环的内循环 吗?

PS。我正在使用 PHP 5.3,所以 yield 是不可能的。也有人告诉我,递归在这里可能会有帮助,但我不知道该怎么做。

感谢帮助

避免嵌套循环的一种方法是先存储数据,然后对其进行操作

$items=array_map("getItems",$categories);
$items=array_reduce("array_merge",$items);
array_walk($items,"item_manipulation");

请注意,此代码并不比您的原始代码段更有效,它只是没有您要求的嵌套循环。

如果我们能知道 getItems 做了什么,以及你对每个项目做了什么操作,那么(也许)更智能的优化是可能的