今天我必须处理一个字符串匹配,我想这样做:
if($somevalue == ( "would"||"be"||"cool" ) ) {...
在PHP 5.3中,没有给出任何错误,并且对我感觉合适,也许我已经编程了很多语言,并且忘记了很多小东西,比如这个大声笑......所以我选择了它。但它继续在第三个选项上呕吐,覆盖其他值,以及其他奇怪的东西。最后我跟着:
if($somevalue == "would" || $somevalue == "be" || $somevalue == "cool") {...
完成了工作,我继续前进。但是,它一直在吃我,因为我觉得第一块块应该有效。我只是偏离轨道?写这个块的正确方法是什么?
答案 0 :(得分:8)
这完全不起作用,就像你试图以PHP或任何其他语言一样工作:
if($somevalue == ( "would"||"be"||"cool" ) ) {...
首先评估(a || b || c)
,然后将结果与$somevalue
进行比较。
在你的情况下,这三个都是常数,并且所有三个都是真实的,所以( "would"||"be"||"cool" )
将总是评估为true
,而你的if语句将始终只评估如
if($somevalue == true)
如果您想检查变量是否包含在一组字符串中,请使用您发布的第二个示例(x == a || x == b || x == c)
,或尝试in_array
:
$strings = array("would", "be", "cool");
if (in_array($somevalue, $strings)) {...