如果使用三元运算符

时间:2014-02-13 07:53:27

标签: php operators ternary

以下是例子:
如果我这样写:

<?php
$var = 'A';
echo    ($var == 'B' || $var == 'C')  ? 'B or C' : 'A';
?>

// Out将成为“A” 但如果我写得如下:

<?php
$var = 'A';
echo    ($var == ('B' || 'C'))  ? 'B or C' : 'A';
?>

它给我输出“B或C” 这里($ var ==('B'||'C'))不正确或者我错过了什么?

创建PHP小提琴:http://phpfiddle.org/main/code/wju-46r

2 个答案:

答案 0 :(得分:1)

这与三元运算符无关。这是关于type juggling和比较。

在第二种情况下,您正在执行'B' || 'C',这将被视为true - 因为||逻辑运算符。因为类型杂耍,'A' == true是正确的,因此B or C将是您的结果

答案 1 :(得分:0)

echo($ var ===('B'||'C'))? 'B或C':'A';

这也是您必须检查数据类型的正确答案。