The Ternary Operator in PHP [duplicate]

大城市里の小女人 提交于 2019-11-28 08:34:37

问题


$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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!