You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP实现:判断多维数组中所有price列值是否与给定变量完全匹配

需求说明

给定多维数组:

$my_value_is = Array ( 
    [2] => Array ( [id] => 2 [price] => 23), 
    [50] => Array ( [id] => 50 [price] => 56 ) 
);

变量 $my_var = 56;需求为:当数组中所有price列的值都与$my_var相等时返回true,否则返回false。当前示例应返回false,因为id为2的元素price值为23,与$my_var不匹配。

错误实现分析

尝试用in_array函数实现:

$u_in_array = in_array($my_var, array_column($my_value_is , 'price'));
if($u_in_array ) {
    echo 'value is true';
 } else {
    echo 'value is false';
 }

这段代码返回true不符合预期,原因是in_array仅判断目标值是否存在于数组中,只要有一个元素匹配就会返回true,完全不符合“所有元素都匹配”的需求。

正确实现方法

方法一:使用array_filter过滤不匹配项

$prices = array_column($my_value_is, 'price');
// 过滤出所有不等于$my_var的price值
$mismatched = array_filter($prices, function($price) use ($my_var) {
    return $price !== $my_var;
});
// 如果没有不匹配的项,说明全部相等
$result = empty($mismatched);
echo $result ? 'value is true' : 'value is false';

原理:如果过滤后得到的数组为空,证明所有price都和$my_var相等,返回true;反之存在不匹配项,返回false。

方法二:使用array_reduce累加判断

$result = array_reduce($my_value_is, function($carry, $item) use ($my_var) {
    // 只要有一个不匹配,carry就会变成false,后续判断不再改变结果
    return $carry && ($item['price'] === $my_var);
}, true);
echo $result ? 'value is true' : 'value is false';

原理:初始值设为true,遍历数组时逐个判断price是否等于目标值,一旦出现不匹配项,最终结果就会变为false。

方法三:利用array_unique去重后判断

$prices = array_column($my_value_is, 'price');
// 去重后如果数组只有一个元素且等于$my_var,说明全部匹配
$result = count(array_unique($prices)) === 1 && reset($prices) === $my_var;
echo $result ? 'value is true' : 'value is false';

原理:如果所有price都相等,去重后数组长度为1,且该元素等于$my_var则满足需求。

内容的提问来源于stack exchange,提问作者user19975737

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 09:02:17