可能重复:
如何展平多维数组?
假设我有一个这样的数组:
array (
1 =>
array (
2 =>
array (
16 =>
array (
18 =>
array (
),
),
17 =>
array (
),
),
),
14 =>
array (
15 =>
array (
),
),
)
Run Code Online (Sandbox Code Playgroud)
我该如何将它转换成这样的数组呢?
array(1,2,16,18,17,14,15);
Run Code Online (Sandbox Code Playgroud)
抱歉,投票结果很接近。没有适当注意你想要钥匙。解决方案如下:
$iterator = new RecursiveIteratorIterator(
new RecursiveArrayIterator($arr),
RecursiveIteratorIterator::SELF_FIRST);
$keys = array();
Run Code Online (Sandbox Code Playgroud)
然后要么
$keys = array();
foreach($iterator as $key => $val) {
$keys[] = $key;
}
Run Code Online (Sandbox Code Playgroud)
或者直接使用迭代器实例
$keys = array();
for($iterator->rewind(); $iterator->valid(); $iterator->next()) {
$keys[] = $iterator->key();
}
Run Code Online (Sandbox Code Playgroud)
或者比必要的更复杂
iterator_apply($iterator, function(Iterator $iterator) use (&$keys) {
$keys[] = $iterator->key();
return TRUE;
}, array($iterator));
Run Code Online (Sandbox Code Playgroud)
给出
Array
(
[0] => 1
[1] => 2
[2] => 16
[3] => 18
[4] => 17
[5] => 14
[6] => 15
)
Run Code Online (Sandbox Code Playgroud)