【问题标题】:find path of a key in a multi-dimensional tree-like array在多维树状数组中查找键的路径
【发布时间】:2017-05-28 19:28:59
【问题描述】:

嘿,我有这个数组(实际的数组可以是几个层次的深度并且跨越一个树结构)

array
  3 => 
    array
      4 => 
        array
          7 => null
          8 => null
      5 => null
  6 => null

现在,例如我想要key7的路径,可以这样显示:

array
  0 => int 7
  1 => int 4
  2 => int 3

有人可以帮我处理这样的递归函数吗?

【问题讨论】:

    标签: php recursion


    【解决方案1】:

    这将返回您正在寻找的内容。如果没有找到key,它会返回null。

    In codepad.

    function getkeypath($arr, $lookup)
    {
        if (array_key_exists($lookup, $arr))
        {
            return array($lookup);
        }
        else
        {
            foreach ($arr as $key => $subarr)
            {
                if (is_array($subarr))
                {
                    $ret = getkeypath($subarr, $lookup);
    
                    if ($ret)
                    {
                        $ret[] = $key;
                        return $ret;
                    }
                }
            }
        }
    
        return null;
    }
    

    【讨论】:

    • 结束条件:如果key存在,则返回包含该key的数组;否则,它会检查数组中的每个值以查看它是否是数组。如果是这样,它会在子阵列上自行运行。如果结果是一个数组,它会将当前键附加到返回数组上并返回它。如果找不到查找,则返回 null(返回值检查失败)。
    猜你喜欢
    • 2011-04-24
    • 2018-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-11
    • 1970-01-01
    相关资源
    最近更新 更多