PHP运算符优先级或匹配

PHP运算符优先级或匹配,php,Php,今天我要处理一个字符串匹配,我想这样做: if($somevalue == ( "would"||"be"||"cool" ) ) {... 是在PHP5.3中,没有错误,我感觉很对,也许我已经用很多语言编程很久了,但是忘记了一些小事情,比如这个lol。。所以我同意了。但它继续在第三个选项上呕吐,覆盖其他值和其他奇怪的东西。最后,我选择了: if($somevalue == "would" || $somevalue == "be" || $somevalue == "cool") {...

今天我要处理一个字符串匹配,我想这样做:

if($somevalue == ( "would"||"be"||"cool" ) ) {...
是在PHP5.3中,没有错误,我感觉很对,也许我已经用很多语言编程很久了,但是忘记了一些小事情,比如这个lol。。所以我同意了。但它继续在第三个选项上呕吐,覆盖其他值和其他奇怪的东西。最后,我选择了:

if($somevalue == "would" || $somevalue == "be" || $somevalue == "cool") {...

工作完成了,我就上路了。但是,它一直在折磨着我,因为我觉得第一个街区应该起作用。。我刚刚偏离轨道吗??编写块的正确方法是什么?

这与您试图使其在PHP或任何其他语言中工作完全不同:

if($somevalue == ( "would"||"be"||"cool" ) ) {...
首先计算
(a | | b | | c)
,并将结果与
$somevalue
进行比较

在您的例子中,这三个都是常量,而这三个都是真实的,因此
(“Wild”| |“be”| |“cool”)
将始终计算为
true
,而您的if语句将始终且永远只计算为

if($somevalue == true)
如果要检查某个变量是否包含在一组字符串中,请使用发布的第二个示例
(x==a | | x==b | | x==c)
,或者在_数组中尝试

$strings = array("would", "be", "cool");

if (in_array($somevalue, $strings)) {...

我正要在数组中发布
方法,但你抢先一步。另一种方法是,如果要比较多组不同的字符串,请使用
switch
。非常正确。。上周我一直在努力解决复杂的问题。大脑被搅乱了哈哈。我想我是在想什么,比如有/在。。正如你们两位所指出的,在数组中。谢谢大家!