$chow = 3;
echo ($chow == 1) ? "one" : ($chow == 2) ? "two" : "three";
输出:三
$chow = 1;
echo ($chow == 1) ? "one" : ($chow == 2) ? "two" : "three";
输出结果:two
有人能解释一下为什么当$chow = 1时,输出结果是"two"而不是"one"吗?
$chow = 3;
echo ($chow == 1) ? "one" : ($chow == 2) ? "two" : "three";
输出:三
$chow = 1;
echo ($chow == 1) ? "one" : ($chow == 2) ? "two" : "three";
输出结果:two
有人能解释一下为什么当$chow = 1时,输出结果是"two"而不是"one"吗?
这是因为三目运算符(?:
)是从左到右结合的,所以它是这样被评估的:
((1 == 1) ? "one" : (1 == 2)) ? "two" : "three"
所以1 == 1
-> TRUE
的意思是:"one" ? "two" : "three"
而且"one"
-> TRUE
,因此输出结果将为:
two
$chow = 1;
echo ($chow == 1) ? "one" : (($chow == 2) ? "two" : "three");
当操作结果不明确时,请记得使用括号。
现在的输出结果为1。
$chow = 1;
echo ($chow == 1) ? "one" : (($chow == 2) ? "two" : "three"); //returns 1