如何避免循环内循环
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
做了什么,以及你对每个项目做了什么操作,那么(也许)更智能的优化是可能的
我有这个代码:
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
做了什么,以及你对每个项目做了什么操作,那么(也许)更智能的优化是可能的