2010-05-30 58 views
1

我不知道怎么称呼这一点,所以我就举一个例子。处理的“或” Ruby的条件与PHP

在PHP

1==2 || 2返回1true

在Ruby

1==2 || 2返回2(第二条语句如果第一计算结果为假)。

有没有在PHP中实现类似的事情,任何短的路?

+1

如果语句是'1 == 1 | | 2',你会想要返回整数'1',还是'true'? – Matchu 2010-05-30 19:58:51

+0

在这种情况下,我想真正要返回。我希望返回第一个非虚假陈述,在这种情况下,首先是正确的。 – Dogbert 2010-05-30 20:47:24

回答

2

如何

1==2 ? 1==2 : 2 

或PHP 5.3

1==2 ?: 2 
+0

我认为第二个将是最短的一段代码。太糟糕了,只有PHP 5.3+。 – Dogbert 2010-05-31 13:09:45

1

在PHP中,布尔表达式的结果总是一个布尔值。所以1==2 || 2true

我能想到的最好的事情是

($var = 1 == 2) || ($var = 2) 

然后$var2

根据不同的答案Matchu的问题,你可能想:

(($var = 1) == 1) || ($var = 2) 

($var = 1 == 1) || ($var = 2) 
1

如何1 == 2 or 2

但是,如果直接打印,所以你需要把结果的变量中的结果可能是不一样的。就拿这个例子:

$result = "a" or 2; 
var_dump($result); // prints string(1) "a" 

var_dump("a" or 2); // prints bool(true) 

到这里看看:http://www.php.net/manual/en/language.operators.logical.php

+0

'$ result =“a”或2;'评估为“a”,因为'='具有比'或'更高的优先级。 '$ result = false或true'将$ result设置为false。 – Dogbert 2010-05-30 20:46:01

+1

我明白了。所以你不能在这种情况下使用'or'运算符? – treznik 2010-05-30 21:31:38