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;
}
}
}