今天在开发中无意间发现一个很奇怪的运算符优先级问题,不知道PHP是怎么设计的这个,出的结果让我很是费解,发上来让大家活动活动脑子。 $x = 2;
echo $x == 2 ? '我' : $x==1 ? '你' : '它';就这么一个普通的3目运算,有些同学想都不想就告诉我,答案是“我”这个问题我测了一下只出在PHP里,答案居然是“你”,有没有达人能解释一下PHP的3目算术优先级问题?大家探讨一下,要是很简单只能说明我笨了,呵呵
echo $x == 2 ? '我' : $x==1 ? '你' : '它';就这么一个普通的3目运算,有些同学想都不想就告诉我,答案是“我”这个问题我测了一下只出在PHP里,答案居然是“你”,有没有达人能解释一下PHP的3目算术优先级问题?大家探讨一下,要是很简单只能说明我笨了,呵呵
echo ( $x == 2 ? '我 ' : $x==1 ) ? '你 ' : '它 ';
这么运行的
if($x==2){
echo '我';
}else{
if($x==1){
echo '你';
}else{
echo '它';
}
}
//测试开始
echo $x == 2; // 输出:1
echo $x == 2 ? '我 ' : $x==1 ?'你': '它 '; // 输出:你
echo $x == 3 ? '我 ' : $x==1 ?'你': '它 '; //输出:它
echo $x == 1 ? '我 ' : $x==1 ?'你': '它 '; //输出:它
//测试结束echo $x == 2 ? '我 ' : $x==1 ?'你': '它 '; // 红色条件为真输出前者:你
echo $x == 1 ? '我 ' : $x==1 ?'你': '它 '; //红色条件为假输出后者:它
echo $x == 1 ? '我 ' : $x==1 ?'你': '它 '; //红色条件为假输出后者:它
而不是a?b:(c?d:e);
echo $x == 2 ? '我 ' : $x==1 ? '你 ' : '它 '; 那也真是奇葩了.除了娱乐,真的不知道还有什么意义