Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在多维树状数组中查找键的路径_Php_Recursion - Fatal编程技术网

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

Php 在多维树状数组中查找键的路径,php,recursion,Php,Recursion,嘿,我有这个阵列(实际的阵列可以是几层深,跨越一个树状结构) 现在,例如,我想要键7的路径,它可以如下所示: array 0 => int 7 1 => int 4 2 => int 3 有人能帮我使用这样一个递归函数吗?这将返回您想要的东西。如果找不到密钥,它将返回null 结束条件:如果该键存在,则返回一个包含该键的数组;否则,它会检查数组中的每个值,以查看它是否为数组。如果是这样,它将在子阵列上自行运行。如果结果是一个数组,它会在返回数组上追加当前键并返回

嘿,我有这个阵列(实际的阵列可以是几层深,跨越一个树状结构)

现在,例如,我想要键
7
的路径,它可以如下所示:

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

有人能帮我使用这样一个递归函数吗?这将返回您想要的东西。如果找不到密钥,它将返回null


结束条件:如果该键存在,则返回一个包含该键的数组;否则,它会检查数组中的每个值,以查看它是否为数组。如果是这样,它将在子阵列上自行运行。如果结果是一个数组,它会在返回数组上追加当前键并返回它。如果找不到查找,则返回null(返回值检查失败)。
array
  0 => int 7
  1 => int 4
  2 => int 3
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;
}