在多维树状数组中查找键的路径

Sto*_*oic 2 php recursion

哎,我这个阵列(实际阵列可以是几个水平深处并跨越树结构)

array
  3 => 
    array
      4 => 
        array
          7 => null
          8 => null
      5 => null
  6 => null
Run Code Online (Sandbox Code Playgroud)

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

array
  0 => int 7
  1 => int 4
  2 => int 3
Run Code Online (Sandbox Code Playgroud)

有人可以帮助我这样的递归功能吗?

eva*_*van 8

这将返回您正在寻找的东西.如果找不到密钥,它将返回null.

在键盘中.

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;
}
Run Code Online (Sandbox Code Playgroud)