2016-03-02 107 views
2

我有以下多维数组:PHP RecursiveIteratorIterator不输出所有键

$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 

我怎样才能让它包含所有的键?

回答

6

你只需要设置正确的模式。从manual

RecursiveIteratorIterator :: SELF_FIRST - 列出叶迭代和家长与家长来首次。

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

似乎工作:http://sandbox.onlinephpfunctions.com/code/8ed757e1a0ac69ada40b7ac48ba7996e6389bc22 –

+0

'SELF_FIRST'和'CHILD_FIRST'模式都将给予非叶项(在你的情况下,数组) ,而默认的'LEAVES_ONLY'模式没有。 – salathe

+0

太棒了! (我确信我试过了) – nick