PHP RecursiveIteratorIterator不输出所有键

nic*_*ick 2 php multidimensional-array recursiveiterator

我有以下多维数组:

$array = array(
  1 => null,
  2 => array(
    3 => null,
    4 => array(
      5 => null,
    ),
    6 => array(
      7 => null,
    ),
  )
);
Run Code Online (Sandbox Code Playgroud)

如果我使用以下代码迭代数组

$iterator = new RecursiveIteratorIterator(new RecursiveArrayIterator($array));
foreach ($iterator as $key => $value) {
  echo $key.' ';
}        
Run Code Online (Sandbox Code Playgroud)

它只输出没有分配数组的键.即

1 3 5 7
Run Code Online (Sandbox Code Playgroud)

如何让它包含所有键?

Riz*_*123 6

您只需要将模式设置为正确.从手册:

RecursiveIteratorIterator :: SELF_FIRST - 在父级出现的情况下迭代叶子和父级.

$iterator = new RecursiveIteratorIterator(new RecursiveArrayIterator($array)
                                          , RecursiveIteratorIterator::SELF_FIRST);
Run Code Online (Sandbox Code Playgroud)