【问题标题】:how to get all keys of this multidimensional array如何获取这个多维数组的所有键
【发布时间】:2017-09-13 12:00:17
【问题描述】:

我也有类似的问题,在这里:solved Problem

但我想得到这样一个数组作为1中这个演示数组的最终结果。

非常感谢!

返回我想得到的数组:

    [0] => "0.name "
    [1] => "0.id "
    [2] => "0.phone "
    [3] => "0.Base.city "
    [4] => "0.EBase.city "
    [5] => "0.Qty "
    [6] => "1.name "
    [7] => "1.id "
    [8] => "1.phone "
    [9] => "1.Base.city "
    [10]=> "1.EBase.city "
    [11]=> "1.Qty "

我试过这个:但不起作用:

        function array_flat(array $myarr)            
        {            
            $myline = "";            
            foreach ($myarr as $key => $value)            
                {            
                if ( $myline == "" ){$myline=sprintf("%s",$myarr[$key]);}            
                else {$myline=sprintf("%s%s",$myline,$myarr[$key]);}            
                }            
            return array($myline);            
        }            

        function array_keys_multi(array $array)            
        {            
            $keys = array();            

            foreach ($array as $key => $value) {            
            $keys[] = $key;            

            if (is_array($value)) {            
                $keys = array_merge($keys, array_keys_multi($value));            
            }            
                else {            
                    $keys = array_flat($keys);            
                }            

            }            

            return $keys;            
        }            

此外,我发现了这个:也许它可以帮助解决我的请求: get all path of an array

【问题讨论】:

  • 你尝试了什么?
  • 你的意思是你想要你数组中键 1 中的所有键吗?
  • 您的预期结果是什么?你想要递归键作为字符串吗?你想要一个包含所有键的新数组吗?如果是后者,你想如何表示递归找到的键?作为一个新的递归数组或类似点分隔的东西(例如 0.EBase.city)?请用更多信息更新问题...
  • @Nukeface 感谢您的帮助,请查看我编辑的问题

标签: php multidimensional-array


【解决方案1】:

是的,这个链接做了我想要的: Solution

             function getKeyPaths(array $tree, $glue = '_')                    
             {                                                                 
                 $paths = array();                                             
                 foreach ($tree as $key => &$mixed) {                          
                     if (is_array($mixed)) {                                   
                         $results = getKeyPaths($mixed, $glue);                
                         foreach ($results as $k => &$v) {                     
                             $paths[$key . $glue . $k] = $v;                   
                         }                                                     
                         unset($results);                                      
                     } else {                                                  
                         $paths[$key] = $mixed;                                
                     }                                                         
                 }                                                             

                 return $paths;                                                
             }                                                                 

调用方式:

     print_r(getKeyPaths($jsonquotesum));

【讨论】:

  • 嗨@Walter,尽管该链接可能对您有所帮助,但在此处发布使其对您有用的解决方案(代码)将有助于将来的其他人。特别是因为链接包含多个代码块;)
  • @Nukeface 感谢您的帮助,但我的速度更快(搜索网络:))
【解决方案2】:

使用 array_key()。 你会得到所有的钥匙。 文档在这里:

http://php.net/manual/fr/function.array-keys.php

【讨论】:

  • 不,我认为这是不正确的。它必须递归地遍历整个树。但输出应该像我要求的那样。
猜你喜欢
  • 2012-06-29
  • 2016-11-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-25
  • 1970-01-01
相关资源
最近更新 更多