Php 如何查找矩阵中是否存在密钥

Php 如何查找矩阵中是否存在密钥,php,arrays,matrix,multidimensional-array,Php,Arrays,Matrix,Multidimensional Array,我有一个具有以下结构的矩阵(它是动态的,可能包含也可能不包含这些键(甚至更多)) 我需要做的是找到$var\u with\u data\u col\u name是否存在 使用我可以检查“where”或“like”是否存在,但我找不到一种方法在它们内部检查特定的密钥 附言: $var\u和\u data\u col\u name将是一个包含以下字符串之一的变量: - data_col1 - data_col2 - data_col3 通过“主数组”进行排序,并使用相同的函数检查每个“子数

我有一个具有以下结构的矩阵(它是动态的,可能包含也可能不包含这些键(甚至更多))

我需要做的是找到$var\u with\u data\u col\u name是否存在

使用我可以检查“where”或“like”是否存在,但我找不到一种方法在它们内部检查特定的密钥


附言:

$var\u和\u data\u col\u name将是一个包含以下字符串之一的变量:

 - data_col1
 - data_col2
 - data_col3

通过“主数组”进行排序,并使用相同的函数检查每个“子数组”的键。

您不能直接在多维数组中搜索数组键或值。遍历数组并搜索它

$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;
    }
}
你可以用这个-

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)

您可以使用这段代码,它为您提供了一个键..其中包含您的$var\u和\u data\u col\u名称

$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]);
}

我相信已经有了一个功能,更多的是锻炼自己

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\u key\u exists”来that@SnehalS但它根本无法通过阵列的部门工作。需要调用一个测试函数recursively@Michel:不幸的是,由于输入中(缺少)限制,您必须使用递归函数。@Michel也许您应该指出您不想使用此解决方案的原因?在项目生命周期中,人们一直在编写自己的实用程序/助手函数。检查这个问题和答案——标记的答案指出了如何使数组的递归函数如所说。递归是一种方法:/+1这是一种“有趣”的方法。
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;
}