PHP中是否存在反向版本的三元运算符支持条件赋值?
答案
你写的这种反向三元赋值写法根本跑不通,会直接触发PHP语法错误。
原因很简单:PHP里三元运算符返回的是运算结果值,不是可以被赋值的变量引用,既不能放在等号左边当左值,也不能直接在三元返回的结果后面加[]做数组追加。而且你写的$foo[]、$bar[]本身就是数组追加操作的简写,本身就不是能被赋值的结构,放在三元分支里从语义上就不对。
要想用三元实现和那段if完全一样的逻辑,用可变变量写就可以,代码很短:
${condition ? 'foo' : 'bar'}[] = $value;
逻辑和if版本完全一致:条件成立就给$foo追加$value,不成立就给$bar追加$value。
要是觉得可变变量的写法可读性不好,也可以用引用的方式实现,效果一样:
$target = &(condition ? $foo : $bar); $target[] = $value; unset($target); // 用完记得解除引用,避免后面误操作改到原数组
内容的提问来源于stack exchange,提问作者Mike Irish
相关产品推荐
相关产品推荐

