PHP Shorthand三元运算符“?:";意外的分析错误“:&”;


PHP Shorthand ternary operator "?:" Parse error unexpected ":"

我刚刚将一些旧的PHP文件上传到一个新服务器,在简写的三元操作中出现了解析错误(意外的":")。例如:

$y = $x ?: "Some default";

php版本为5.2.16代码中充斥着这些简写?:,所以在改变它们之前,我想看看是否有人知道这件事,因为我已经有一段时间没有使用PHP了。

这仅在PHP 5.3 之后可用

表达式(expr1)?(expr2):如果expr1的计算结果为TRUE,则(expr3)计算结果为expr2;如果expr1计算结果为FALSE则计算结果为expr3

从PHP 5.3开始,可以省略三元运算符的中间部分。表达式expr1?:如果expr1的计算结果为TRUE,则expr3返回expr1,否则返回expr31

有关更多上下文,请参见此示例。

或者评论中更有用但需要注意的一点:http://www.php.net/manual/en/control-structures.if.php#102060


1 http://php.net/manual/en/language.operators.comparison.php

由于您使用的是php 5.2.16,您的三进制需要2个选项,例如

$y = $x? "???" : "Some default";

变量=条件?真值:假值;