PHP多个三目运算拼接的问题

2,197 阅读1分钟

今天看到之前老代码是这样写的:

<?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