如何避免循环内部循环

时间:2015-05-08 20:05:51

标签: php algorithm logic

我有这段代码:

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

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

如您所见,内循环取决于外循环。问题是,如果数据太大,这需要相当长的时间。是否有一些方法,算法或技术,以便我可以避免依赖外环的内环

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

感谢您的帮助

1 个答案:

答案 0 :(得分:2)

一种方法是避免嵌套循环首先存储数据,然后操纵它

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

请注意,此代码的效率不如原始代码段,只是没有嵌套循环。

如果我们知道getItems做了什么,以及你做了什么项目操作,那么(可能)更可行的优化