Php 高级数组\u键\u存在函数

Php 高级数组\u键\u存在函数,php,arrays,Php,Arrays,我有这个阵列: $test['first']['second']['third']='test'; 我想编写以下功能: function check_array_key_path_exists($test, $path){ $path_keys = explode('.', $path); /* some code return true/false */ } 我想看看这个效果 check_array_key_path_exists($test, 'first.second.dog'

我有这个阵列:

$test['first']['second']['third']='test';
我想编写以下功能:

function check_array_key_path_exists($test, $path){
    $path_keys = explode('.', $path);
/*
some code
return true/false
*/
}
我想看看这个效果

check_array_key_path_exists($test, 'first.second.dog'); //false
check_array_key_path_exists($test, 'first.second'); //true
check_array_key_path_exists($test, 'second'); //false
check_array_key_path_exists($test, 'first.second.third'); //true
check_array_key_path_exists($test, 'first.second.third.dog.cat'); //false

简单!代码如下:

<?php
$array = [];

$array['first']['second']['third'] = 'test';

function check_array_key_path_exists($array, $path) {
    $pathKeys = explode('.', $path);

    foreach($pathKeys as $pathKey) {
        if(!isset($array[$pathKey])) {
            return false;
        }

        $array = $array[$pathKey];
    }

    return true;
}

if(check_array_key_path_exists($array, 'first.second.third') === false) {
    echo "false";
} else {
    echo "true";
}

您可以尝试递归地检查路径的每个段。不知怎的,像这样(未经测试):


定义“完全破碎”。可能有输入错误-正如我写的,这是未经测试的,但逻辑应该很清楚。有输入错误,并且array_key_exists函数被破坏。@mariusz如果您满意,请勾选这个答案。
function array_key_path_exists($array, $path) {
    $split = explode('.', $path, 2);
    if (array_key_exists($array, $split[0])) {
        if (!empty($split[1])) {
            return array_key_path_exists($array[$split[0]], $split[1]);
        } else {
            return true;
        }
    }
}