使用||时的简写用于比较(==)而不是赋值(=)

时间:2013-12-05 20:23:54

标签: javascript php

我见过很多关于使用||的问题在赋值表达式中,例如

$a = $b || $c

但我没有碰到过这个,所以请原谅我,如果它是重复的。

您是否可以缩写if语句中使用的比较,例如:

if ($a == ($b || $c || $d)...

或是否有必要将其全部写出来

if ( ($a == $b) || ($a == $c) || ($a == $d) )... ?

我正在使用PHP,但这个问题也适用于JavaScript

3 个答案:

答案 0 :(得分:3)

你不能那样缩写。您必须像上一个代码块一样执行完整语法。如果您想缩短它,可以将与$a进行比较的变量放入数组并使用in_array()。这通常会起作用,但并非总是如此,具体取决于实际值。但是,无论如何这都不是那么好,因为你正在为另一个代码换掉一块代码,所以你并没有真正缩短代码。

或者,请考虑使用switch而不是if,特别是如果您需要根据哪些条件成立而执行不同的操作。

答案 1 :(得分:2)

  

您是否可以缩写if语句中使用的比较,例如$a == ($b || $c || $d)

没有。首先评估括号中的表达式,即($b || $c || $d)计算第一个真值。让我们考虑$b = 0, $c = 'foo', $d = null,然后($b || $c || $d)会产生'foo',因此您最终会比较$a == $c

相关:Shorthand for multiple OR expressions in if statement

(我实际上就JavaScript而回答了这个问题($a是JS中的有效变量名),但在PHP中也是如此)。

答案 2 :(得分:2)

不,你不能这样缩写。但是,如果要将x与大量变量进行比较,可以使用循环并迭代要比较x的变量,每次迭代循环执行一次比较。