递归获取多维数组中的键 [英] Get keys from multidimensional array recursively
本文介绍了递归获取多维数组中的键的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有这样的多维数组。它是在var_dump()格式。
array(1){
[4] =>
array(1){
[2] =>
array(1){
[5] =>
array(1){
[1] =>
array(1){
[3] =>
array(1){
[6] =>
array(0){
}
}
}
}
}
}
}
code>
又名 $ multiArray ,我想从中获取所有的键并将它们设置为像这样获得数组。
[0 => 4,1 => 2,2 => 5,3 => 1, 4 => 3,5 => 6] aka ** $ keysArray **。
试过这样。
foreach(new \RecursiveIteratorIterator(
new \ RecursiveArrayIterator(** $ multiArray **),
\ RecursiveIteratorIterator :: SELF_FIRST)
as $ key = > $ value){
** $ keysArray [] ** = $ key;
}
也是这样。
函数array_keys_multi(array $ array){
$ keys = [];
foreach($ array as $ key => $ value){
$ keys [] = $ key;
if(is_array($ value)){
$ keys = array_merge($ keys,$ this-> array_keys_multi($ value));
}
}
返回$ keys;
}
但它们都返回不正确的数据。如何获得所有密钥?
解决方案
这似乎适用于我:
函数array_keys_recursive(array $ arr){
foreach($ arr as $ key => $ value){
$ return [] = $ key ;
if(is_array($ value))$ return = array_merge($ return,array_keys_recursive($ value));
}
return $ return;
}
与您的基本相同,顺便说一下,
I have multidimensional array like this. It is in var_dump() formatting.
array(1) {
[4]=>
array(1) {
[2]=>
array(1) {
[5]=>
array(1) {
[1]=>
array(1) {
[3]=>
array(1) {
[6]=>
array(0) {
}
}
}
}
}
}
}
aka $multiArray and i want to get all keys from it and set them to get array like this.
[0=>4, 1=>2, 2=>5, 3=>1, 4=>3, 5=>6] aka **$keysArray**.
Tried like this.
foreach( new \RecursiveIteratorIterator(
new \RecursiveArrayIterator(**$multiArray**),
\RecursiveIteratorIterator::SELF_FIRST)
as $key => $value) {
**$keysArray[]** = $key;
}
also this.
function array_keys_multi(array $array) {
$keys = [];
foreach ($array as $key => $value) {
$keys[] = $key;
if (is_array($value)) {
$keys = array_merge($keys, $this->array_keys_multi($value));
}
}
return $keys;
}
but both of them returns incorrect data. How can i get all keys?
解决方案
This seems to work for me:
function array_keys_recursive(array $arr) {
foreach($arr as $key => $value) {
$return[] = $key;
if(is_array($value)) $return = array_merge($return, array_keys_recursive($value));
}
return $return;
}
Basically identical to yours, which also works, by the way.
这篇关于递归获取多维数组中的键的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文