Php 三元运算符的If-else

Php 三元运算符的If-else,php,operators,ternary,Php,Operators,Ternary,下面是一个例子: 如果我这样写: <?php $var = 'A'; echo ($var == 'B' || $var == 'C') ? 'B or C' : 'A'; ?> //这将是一场灾难 但如果我这样写: <?php $var = 'A'; echo ($var == ('B' || 'C')) ? 'B or C' : 'A'; ?> 它给我的输出是B或C。 这里$var='B'| |'C'不正确,或者我遗漏了什么 创建PHP小提琴:这与

下面是一个例子: 如果我这样写:

<?php
$var = 'A';
echo    ($var == 'B' || $var == 'C')  ? 'B or C' : 'A';
?>
//这将是一场灾难 但如果我这样写:

<?php
$var = 'A';
echo    ($var == ('B' || 'C'))  ? 'B or C' : 'A';
?>
它给我的输出是B或C。 这里$var='B'| |'C'不正确,或者我遗漏了什么


创建PHP小提琴:

这与三元运算符无关。这是一个关于学习和比较的问题


在第二种情况下,您正在执行“B”| |“C”,这将被视为true,因为| |是逻辑运算符。因此'A'==true是真的,因为类型转换,因此B或C将是您的结果

echo$var=='B'| |'C'?'B或C’:‘A’


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

因为在第二个示例中,您正在对“B”和“C”进行OR运算,然后将运算结果与$var;'“B”或“C”的计算结果将为布尔值true,因此您可以将类型转换为$var to Boolean以与布尔值true进行比较。如果您将$var='B'。。。它会给你“A”