加入收藏 | 设为首页 | 会员中心 | 我要投稿 安卓应用网 (https://www.0791zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > PHP > 正文

PHP三维优先级运算

发布时间:2020-05-25 03:01:12 所属栏目:PHP 来源:互联网
导读:昨天去某大型公司面试,做了一套面试题,整套面试题的基础要求比较高,对于js的使用有一定的要求。在本次面试中碰到PHP三维运算优先级的问题,先看题:?php$b=20;$c=40;$a=$b$c?($c-$b)?1:($b-$c)0:($b+$c)?0:$b*$c;echo $a;?此题要求的三维运算和优先级的结

昨天去某大型公司面试,做了一套面试题,整套面试题的基础要求比较高,对于js的使用有一定的要求。在本次面试中碰到PHP三维运算优先级的问题,先看题:

$c?($c-$b)?1:($b-$c)>0:($b+$c)?0:$b*$c; echo $a;

此题要求的三维运算和优先级的结合使用,当时做对了,但是不明白原理。回去以后请教了大神才明白怎么回事,看解题思路:

//先看个简单的:
//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;

*/

$c? ($c-$b)?1:($b-$c)>0:($b+$c)?0:$b*$c; // $b>$c?1:($b+$c)?0:$b*$c // $b>$c?1:0 // 0 echo $a;

(编辑:安卓应用网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读