我刚刚将一些旧的PHP文件上传到新服务器,并在速记三元操作上得到解析错误(意外':')。例如:
$y = $x ?: "Some default";
php版本是5.2.16代码中充斥着这些简写?:,所以在更改它们之前,我想我会看到是否有人对此有所了解,因为我现在还没有使用PHP一段时间。
答案 0 :(得分:57)
这仅适用于PHP 5.3
表达式(expr1)? (expr2):( expr3)如果expr1的计算结果为 TRUE ,则计算结果为expr2;如果expr1计算结果为 FALSE ,则计算结果为expr3。
从PHP 5.3开始,可以省略三元运算符的中间部分。表达式 expr1?:expr3 如果expr1的计算结果为 TRUE ,则返回expr1,否则返回expr3。 1
有关更多背景信息,请参阅this example。
或更有用但注释中的注释: http://www.php.net/manual/en/control-structures.if.php#102060
1 <子> http://php.net/manual/en/language.operators.comparison.php 子>
答案 1 :(得分:0)
由于您使用的是php 5.2.16,因此您的三元组需要2个选项,例如
$y = $x? "???" : "Some default";
变量=条件?真值:假值;