我有这段代码:
foreach($categories as $category) {
$items = getItems($category);
foreach($items as $item) {
// some code to manipulate $item
}
}
如您所见,内循环取决于外循环。问题是,如果数据太大,这需要相当长的时间。是否有一些方法,算法或技术,以便我可以避免依赖外环的内环?
PS。我使用PHP 5.3,因此yield
是不可能的。还有人告诉我这可能是递归可能会有所帮助,但我不知道该怎么做。
感谢您的帮助
答案 0 :(得分:2)
一种方法是避免嵌套循环首先存储数据,然后操纵它
$items=array_map("getItems",$categories);
$items=array_reduce("array_merge",$items);
array_walk($items,"item_manipulation");
请注意,此代码的效率不如原始代码段,只是没有嵌套循环。
如果我们知道getItems
做了什么,以及你做了什么项目操作,那么(可能)更可行的优化