Php 如何避免循环内部的循环

Php 如何避免循环内部的循环,php,algorithm,logic,Php,Algorithm,Logic,我有以下代码: foreach($categories as $category) { $items = getItems($category); foreach($items as $item) { // some code to manipulate $item } } 如您所见,内循环依赖于外循环。问题是,若数据太大,这需要相当长的时间。是否有某种方法、算法或技术可以避免依赖于外部循环的内部循环 另外,我使用的是PHP5.3,所以yield是毫无疑问的。也有人告诉

我有以下代码:

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

  foreach($items as $item) {
     // some code to manipulate $item
  }
}
如您所见,内循环依赖于外循环。问题是,若数据太大,这需要相当长的时间。是否有某种方法、算法或技术可以避免依赖于外部循环的内部循环

另外,我使用的是PHP5.3,所以
yield
是毫无疑问的。也有人告诉我递归在这里可能很有用,但我不知道该怎么做


感谢您的帮助

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

$items=array_map("getItems",$categories);
$items=array_reduce("array_merge",$items);
array_walk($items,"item_manipulation");
请注意,这段代码并没有比原始代码段更高效,只是没有您要求的嵌套循环


如果我们能够知道
getItems
做了什么,以及您对每项操作做了什么,

根据您所提供的,我看不到任何方法可以从算法上避免这一点,那么一个更智能的优化将(可能)成为可能。您可以调整您尝试执行的工作流程,这样您就不必一次操作每个类别的项,而只需一次执行一个类别getItems是否运行数据库查询?如果您可以将数组代码和期望的结果作为输出,则任何人都可以建议解决方案请添加
getItems
的代码总体而言,我的观点是如何避免循环中的循环,无论我是在使用数据库还是使用
getItems
的功能。当我们必须编写这样的代码时,通常会出现这种情况,但应该有一些性能更好的方法来避免内部循环。希望是有道理的。听起来是个好主意,我会自己做的。感谢您提供的有用提示:)