我之前从未遇到过这种情况,但您如何测试三个变量是否相同?以下,显然不起作用,但我想不出一种优雅(和正确)的方式来编写以下内容:
if ($select_above_average === $select_average === $select_below_average) { }
答案 0 :(得分:58)
if ((a == b) && (b == c)) {
... they're all equal ...
}
答案 1 :(得分:21)
$values = array($select_above_average, $select_average, $select_below_average);
if(count(array_unique($values)) === 1) {
// do stuff if all elements are the same
}
这是另一种方法。
答案 2 :(得分:8)
if ($select_above_average === $select_average
&& $select_average === $select_below_average) { }
答案 3 :(得分:5)
你已经得到了亚当的答案,但记住如何正确地做到这一点的一个好方法就是记住你应该用()
括号进行单一验证,如果你只做一次检查那么你已经使用if ( )语句提供大括号。
示例:
如果( a === b )
如果你做多次,那么
if(( a === b )&& ( c = == d ))
如果你记得每一组大括号都是验证检查,你可以这样登录:
if((( a === b ) || ( c == = d ))&& ( e === f ))
if语句和许多其他逻辑操作在层次结构上工作,以便检查中的单个检查量对父检查产生影响。
如果a === b
或c === d
失败,请执行上面的第三个示例,然后永远不会检查e === f
,因为ab,cd包含在大括号中,以便返回并检查。
希望这会对你有所帮助。
答案 4 :(得分:1)
我有一个独特的情况,我需要查看三个数组中的项目数量是否与此方案相同。
这就是我提出的:
(假设字段,运算符和值都是数组)
$allfieldscount = array(count($fields), count($operators), count($values)); //store an array of the count of all the arrays.
$same = array_count_values($allfieldscount);//returns an array by values in the array. We are looking to see only 1 item in the array with a value of 3.
if(count($same) != 1){
//Then it's not the same
}else{
//Then it's the same
}
这个策略计算不同数组中的字段,如果它们都相同则使用array_count_values,那么它返回的数组的数量将是' 1',如果它是其他任何东西那么它不一样。在php.net上查找array_count_values以了解更多内容。