PHP多个三目运算拼接的问题
今天看到之前老代码是这样写的:
<?php
$a = "AA";
$b = "BB";
$c = !empty($a)?$a:"".!empty($b)?$b:"";
echo $c;
?>
上面写法就是拼接操作,原以为结果会是AABB,运行才发现结果是BB
研究了一下,我个人认为
$c = !empty($a)?$a:"".!empty($b)?$b:"";
相当于
$c = (!empty($a)?$a:"".!empty($b))?$b:"";
(!empty($a)?$a:"".!empty($b))
为一体,当条件!empty($a)
为真的时候就输出$b
如果这个时候把改为$a=""
,他的结果还是BB
也就是说(!empty($a)?$a:"".!empty($b))
可以理解为或运算,!empty($a)
为false但是!empty($b)
为true,所以还是$b
转载自:https://juejin.cn/post/7143877505529675812