PHP:测试三个变量是否相等

Mat*_*tty 38 php variables equality

我以前从未遇到过这种情况,但您如何测试三个变量是否相同?以下,显然不起作用,但我想不出一个优雅(和正确)的方式写下面的内容:

if ($select_above_average === $select_average === $select_below_average) { }

Mar*_*c B 62

if ((a == b) && (b == c)) {
   ... they're all equal ...
}
Run Code Online (Sandbox Code Playgroud)

通过传递关系

  • 使用`===`,而不是`==`.PHP的松散平等不是传递性的! (6认同)
  • 这可以继续这样``(a === b && b === c && c === d && d === e)`等..来检查多个变量是否都相等. (3认同)
  • 谢谢!我也有一篇很好的维基百科文章! (2认同)

Pee*_*Haa 22

$values = array($select_above_average, $select_average, $select_below_average);

if(count(array_unique($values)) === 1) {
    // do stuff if all elements are the same
}
Run Code Online (Sandbox Code Playgroud)

这将是另一种方式.

  • Yowza,谈论驾驶500英里在7-11获得Slurpee而不是走到街区7-11那里. (12认同)
  • 但效率很低. (2认同)

Dog*_*ert 8

if ($select_above_average === $select_average
    && $select_average === $select_below_average) { }
Run Code Online (Sandbox Code Playgroud)


Rob*_*itt 5

你已经得到了亚当的答案,但是记住如何正确地做到这一点的一个好方法就是记住你应该用()括号进行单一验证,如果你只做一次检查,那么你已经有了if提供的括号( )声明.

例:

如果( a === b )

如果你做多次那么

if( ( a === b ) && ( c === d ))

如果你记得每一组大括号都是验证检查,你可以像这样登录:

if( ((= = b ) || ( c === d )) && ( e === f ))

if语句和许多其他逻辑操作在层次结构上工作,以便检查中的单个检查的数量对父检查有影响.

如果a === b或者c === d失败那么采取上面的第三个例子e === f将永远不会被检查,因为ab,cd被包裹在大括号中,因此返回并检查.

希望这能帮到你一点点.