PHP 递归迭代器迭代器不输出所有键


PHP RecursiveIteratorIterator not outputting all keys

我有以下多维数组:

$array = array(
  1 => null,
  2 => array(
    3 => null,
    4 => array(
      5 => null,
    ),
    6 => array(
      7 => null,
    ),
  )
);

如果我使用以下代码遍历数组

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

它只输出键,没有分配给它们的数组。 即

1 3 5 7

如何让它包含所有密钥?

您只需要正确设置模式即可。从手册:

递归迭代器迭代器::SELF_FIRST - 列出迭代中的叶子和父项,父项排在第一位。

$iterator = new RecursiveIteratorIterator(new RecursiveArrayIterator($array)
                                          , RecursiveIteratorIterator::SELF_FIRST);