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

Shorthand when using || for comparison (==) rather than assignment (=)

本文关键字:赋值 比较 使用      更新时间:2024-04-16

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

$a = $b || $c

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

你能缩写if语句中使用的比较吗,比如:

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

或者有必要把它完整地写成吗

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

我在PHP中工作,但这个问题也适用于JavaScript

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

或者,考虑使用switch而不是if,特别是如果您需要根据这些条件中的哪一个成立来做一些不同的事情。

你能缩写一下if语句中使用的比较吗,比如$a == ($b || $c || $d)

没有。括号中的表达式首先求值,即($b || $c || $d)求值为第一个真值。让我们考虑$b = 0, $c = 'foo', $d = null,然后($b || $c || $d)将产生'foo',所以您最终将比较$a == $c

Related:if语句中多个OR表达式的缩写

(我实际上是针对JavaScript回答的($a在JS中是一个有效的变量名),但在PHP中是一样的)。

不,不能这样缩写。不过,如果你想将x与大量变量进行比较,你可以使用一个循环来迭代你要将x与之进行比较的变量,在循环的每次迭代中执行一次比较。