PHP中的三元运算符

Mon*_*nir 4 php ternary-operator

$chow = 3;
echo ($chow == 1) ? "one" : ($chow == 2) ? "two" : "three";
Run Code Online (Sandbox Code Playgroud)

输出:三

$chow = 1;
echo ($chow == 1) ? "one" : ($chow == 2) ? "two" : "three";
Run Code Online (Sandbox Code Playgroud)

输出:两个

任何人都可以解释为什么当$ chow = 1而不是"one"时输出是"两个"?

Riz*_*123 12

这是因为三元运算符(?:)是左关联的,所以这就是它的评估方式:

((1 == 1) ? "one" : (1 == 2)) ? "two" : "three"
Run Code Online (Sandbox Code Playgroud)

所以1 == 1- > TRUE意味着它是:

"one" ? "two" : "three"
Run Code Online (Sandbox Code Playgroud)

并且"one"- > TRUE所以输出将是:

two
Run Code Online (Sandbox Code Playgroud)


Kam*_*kus 6

$chow = 1;
echo ($chow == 1) ? "one" : (($chow == 2) ? "two" : "three");
Run Code Online (Sandbox Code Playgroud)

记得在操作结果不清楚时使用括号

现在输出是一个