php三元运算?结果为什么是0?
1个回答
展开全部
/*
关于运算优先级,先看文档:http://www.php.net/manual/zh/language.operators.precedence.php
?:是左结合,就是从左向右
*/
//先看个简单的:
//1.想知道??:它是怎样解析的
//$a=true?false?1:0;//报错,语法错误
//2.再试一下这个:
$a=true?false?1:0:2;
echo $a;//0
/*
通过观察以上两个判断,我猜测应该是这样的:
当出现?时,它会在它后面寻找:,如果一直没有找到,则会报错
如果在后面的:前面出现了?,则会先让后面的?与:结合
也就是说true?false? 这种表达,它是不去解析的
true?false?true:false 这种表面,它会选择解析后面的一对?:然后得到结果:false
语句就变成true?false 了,这样语句就不完整了,所以会报错
下面我们想看楼主的问题:
$b=20;
$c=40;
$a=$b>$c?($c-$b)?1:($b-$c)>0:($b+$c)?0:$b*$c;
解析的顺序就应该是这样的:
$a=true? (20?1:-20)>0 : 60 ?0:800;
$a=true?1>0:60?0:800;
$a=true?true:60?0:800;
$a=true?0:800;
$a=0;
*/
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询