我有一个矩阵¹ ² ³,其结构如下(它是动态的,可能包含也可能不包含这些键(甚至更多))
array(
"where" => array(
"data_col1": "val1",
"data_col2": "val2"
),
"like" => array(
"data_col3": "val3"
)
);
我需要做的是找出 $ var_with_data_col_name 是否存在。
使用array_key_exists我可以检查“where”或“like”是否存在,但我找不到在其中检查特定键的方法。
PS:
$ var_with_data_col_name 是一个变量,其中一个以下字符串:
- data_col1
- data_col2
- data_col3
答案 0 :(得分:1)
您无法直接在多维数组中搜索数组键或值。然后遍历阵列并搜索它。
$data_column_1_exists = false;
foreach($array as $key => $value)
{
if(array_key_exists('data_col1', $value)
&& $key == 'where' //optionally check in specific array
)
{
$data_column_1_exists = true;
}
}
答案 1 :(得分:1)
你可以使用它 -
function key_exists_level2($arr, $key){
foreach($arr as $level1arr){
if(isset($level1arr[$key])){
return true;
}
}
return false;
}
//And check with
key_exists_level2($arr, $var_with_data_col_name)
答案 2 :(得分:0)
遍历“主数组”并使用相同的函数检查每个“子数组”的键
答案 3 :(得分:0)
您可以使用此代码,它会为您提供key..which具有$ var_with_data_col_name。
$data = array(
"where" => array(
"data_col1" => "val1",
"data_col2" => "val2"
),
"like" => array(
"data_col3" => "val3"
)
);
$key;
$flag = false;
$data_key = 'data_col1';
foreach($data as $our_key => $array){
if(array_key_exists($data_key,$array)){
$key = $our_key;
$flag = true;
}
}
if($flag){
print_r($data[$key]);
}
答案 4 :(得分:0)
我确信那里已经有了一个功能,更多是我自己的练习!
function recursive_array_key_exists($needle, array $haystack) {
if (array_key_exists($needle, $haystack)) return true;
foreach($haystack as $value) {
if (is_array($value)) {
if (recursive_array_key_exists($needle, $value)) return true;
}
}
return false;
}
刚看到评论链接到此答案:array_key_exists is not working
我想我的基本相同只是更少的代码!