递归获取多维数组中的键 [英] Get keys from multidimensional array recursively

查看:105
本文介绍了递归获取多维数组中的键的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有这样的多维数组。它是在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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆