PHP如何判断多维数组中存在满足['value']['content']等于1的元素
问题原因
content是嵌套在value子数组下的二级字段,你之前直接用array_column($testArray, 'content')只能提取顶层数组的content字段,而你的测试数组顶层不存在该键,返回的是空数组,因此in_array判断结果为false。
你尝试的array_search('content', array_column($testArray, 'value'))写法同样错误:array_column($testArray, 'value')返回的是由多个value子数组组成的数组,搜索字符串content自然无法匹配。
正确实现方式
写法1:两次array_column组合(适合简单场景,兼容性好)
先提取所有value子数组,再从value数组中提取content列做判断:
$bool = in_array('1', array_column(array_column($testArray, 'value'), 'content')); var_dump($bool); // 输出 bool(true)
写法2:array_filter自定义校验(适合复杂场景,更稳妥)
如果需要加额外校验规则、或者避免数组结构异常导致的警告,用自定义回调处理:
$matchedItems = array_filter($testArray, function($item) { // 先判断键是否存在,避免出现Undefined array key警告 return isset($item['value']['content']) && $item['value']['content'] == 1; }); $bool = !empty($matchedItems);
如果需要获取符合条件的子数组下标或者内容,直接遍历$matchedItems即可。
内容的提问来源于stack exchange,提问作者Gurdt
相关产品推荐
相关产品推荐

