程序递归数组

时间:2012-09-21 11:36:14

标签: php arrays recursion

我不知道如何描述这个并且我不知道是否有人已经考虑过这样的解决方案,但我需要循环遍历数组,并且在某些情况下添加到该数组并循环遍历这些值。我想写一个简单但有效的解决方案,用于在文件中查找某种格式的所有值(让我们称之为块)。这些块本身就是文件,可能包含其他可能包含其他块的块等等。它必须与关联数组一起使用,因此对于循环和索引不起作用。


假设有一个名为'main'的块。我们遍历它并发现块'main'包含其他块,例如'top'和'bottom'。循环遍历这些,我们看到'top'有'header'和'navigation'块,'bottom'有'footer'和'copyright'块。

我写的解决方案是这样的(考虑$ blocknames数组有一些起始值):

while ($blockname = current($blocknames)) {
  $names = $this->getBlockNames($blockname);
  foreach ($names as $name) {
    $blocknames[] = $name;
  }
  next($blocknames);
}

这对于array_merge来说更容易,因为$ names也是一个数组而不是单个值。我无法将数组与array_merge合并,因为PHP在调用函数后重置了内部指针。

更简单的测试用例:

$values = array('a' => 1, 'b' => 2, 'c' => 3);
while ($value = current($values)) {
  if ($value == 2) {
    $values['d'] = 4;
  }
  if ($value == 4) {
    $values['e'] = 5;
  }
  next($values);
}

结果值:

array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5)

我很想看到这个问题的其他程序(或不是)解决方案。

0 个答案:

没有答案
相关问题