PHP运算符优先级或匹配

时间:2014-02-14 17:17:08

标签: php

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

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

在PHP 5.3中,没有给出任何错误,并且对我感觉合适,也许我已经编程了很多语言,并且忘记了很多小东西,比如这个大声笑......所以我选择了它。但它继续在第三个选项上呕吐,覆盖其他值,以及其他奇怪的东西。最后我跟着:

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

完成了工作,我继续前进。但是,它一直在吃我,因为我觉得第一块块应该有效。我只是偏离轨道?写这个块的正确方法是什么?

1 个答案:

答案 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)) {...