这是有效的PHP语法吗?

chu*_*tar 0 php syntax conditional programming-languages

if ($var == ($var1 || $var2))
{
    ...
}
Run Code Online (Sandbox Code Playgroud)

我正在考虑使用它,但我确定它是否有效,并且似乎没有某个地方可以检查.
它似乎在逻辑上与我一致,但我不确定,我没有东西可以在附近测试它.
如果它是有效的,那么其他主流语言支持这种构造.

编辑:比较是有效的,但不是我想的方式.
我试图做的实际上是我刚刚发现的in_array()函数.

Gum*_*mbo 8

你的代码语法有效,但语义可能不是你想要的.

因为$var1 || $var2是一个布尔表达式并且总是产生truefalse.然后$var将其与该布尔表达式的结果进行比较.所以$var总是比较假,而不是$var1$var2(这就是你可能期望的).所以这不是一个简写($var == $var1) || ($var == $var2).

正如您已经注意到的那样,in_array如果您不想编写类似的表达式($var == $var1) || ($var == $var2),这是一个解决此问题的方法,尤其是当您想要与之比较的任意数量的值时:

in_array($var, array($var1, $var2))
Run Code Online (Sandbox Code Playgroud)

这相当于:

($var == $var1) || ($var == $var2)
Run Code Online (Sandbox Code Playgroud)

如果需要严格比较(使用===而不是==),请将第三个参数设置为true:

in_array($var, array($var1, $var2), true)
Run Code Online (Sandbox Code Playgroud)

现在相当于:

($var === $var1) || ($var === $var2)
Run Code Online (Sandbox Code Playgroud)