如何检查数组中是否存在某个键,但它可以是多个键? 我的意思是:
$a['b'] = 'Im exists!';
var_dump (isset($a['b']));
但我的情况很复杂:
$a['c'] = 'c';
$a['xxc'] = 'value';
$a[2][4] = 'more complex!';
$a['b']['d']['g'] = 4;
此时,isset()不会工作,但是array_key_exists都没有。然后如何检查,如果我想知道[2] [4]是否存在,或者['b'] ['d'] ['g']是否存在?
答案 0 :(得分:2)
这对你有用吗(多维数组的递归函数)?
function array_key_exists_r($needle, $haystack)
{
$result = array_key_exists($needle, $haystack);
if ($result) return $result;
foreach ($haystack as $v) {
if (is_array($v)) {
$result = array_key_exists_r($needle, $v);
}
if ($result) return $result;
}
return $result;
}
答案 1 :(得分:2)
这是一个有趣的问题需要解决,请到这里:
function key_exists_recursive($keys, $array)
{
if(!is_array($keys) or !is_array($array))
{
return false;
}
if(count($keys) > 1)
{
return key_exists_recursive(array_slice($keys, 1), $array[$keys[0]]);
}
return isset($array[$keys[0]]);
}
用法:key_exists_recursive(array('c'), $a);
答案 2 :(得分:0)
isset()实际应该适用于此。尝试运行以下内容:
$a = array();
$a['b']['d']['g'] = 4;
if (isset($a['b']['d']['g']))
{
print_r('b,d,g exists!');
}
if (!isset($a['1']['2']['3']))
{
print_r('1,2,3 does not exist!');
}
输出:
b,d,g存在! 1,2,3不存在!
答案 3 :(得分:0)
这是否回答:
function array_keys_exist($searchForKeys = array(), $inArray) {
$inArrayKeys = array_keys($inArray);
return count(array_intersect($searchForKeys, $inArrayKeys)) == count($searchForKeys);
}