问题
$chow = 3;
echo ($chow == 1) ? "one" : ($chow == 2) ? "two" : "three";
output: three
$chow = 1;
echo ($chow == 1) ? "one" : ($chow == 2) ? "two" : "three";
output: two
Can anyone explain why the output is "two" when $chow = 1 instead of "one"?
回答1:
This is because the ternary operator (?:
) is left associative so this is how it's getting evaluated:
((1 == 1) ? "one" : (1 == 2)) ? "two" : "three"
So 1 == 1
-> TRUE
means that then it's:
"one" ? "two" : "three"
And "one"
-> TRUE
so the output will be:
two
回答2:
$chow = 1;
echo ($chow == 1) ? "one" : (($chow == 2) ? "two" : "three");
remember to use brackets when result of operation can be unclear
now output is one
回答3:
The operator is confused, you need to put brackets around your second codition. use the code below
$chow = 1;
echo ($chow == 1) ? "one" : (($chow == 2) ? "two" : "three"); //returns 1
Hope this helps you
来源:https://stackoverflow.com/questions/28716043/the-ternary-operator-in-php