为什么下面的代码打印Five
$a = 6;
$b = 'Hey, The Value of $a Is '.
($a == 1)?'One':''.
($a == 5)?'Five':''.
', Period.';
echo $b;
为什么只有Five
??
因为您应该为每个简写if语句使用()
:
$a = 5;
$b = 'Hey, The Value of $a Is '.
(($a == 1) ? 'One' : '') . (($a == 5) ? 'Five' : '') .
', Period.';
echo $b;
之所以发生,是因为$b首先被分配给'Hey, The Value of $a Is '
,然后分配给One
(如果语法无效,作为速记),之后它被分配给Five
(再次,由于巧合,因为它仍然是第一个),并且(再次)语法无效,该值不与',Period.'
连接。所以,总的来说,这个字符串只是三个赋值的顺序,因为第三个是Five
,所以它在浏览器中被打印出来。
我们将代码设为1行
$b = '嘿,$a的值是'。($a == 1)?($a == 5)?' 5 ': "。"。";
删除冗余。
$b = '嘿,$a的值是'。($a == 1)?' 1 ':($a == 5)?"五":"。",
所以$a = 5表示执行黑体显示的部分:
($a == 5)?"五":"。"
现在,由于$a = 5只显示的部分被再次执行,因此我们只得到'Five'。