PHP速记三元运算符“?:”解析错误意外“:”

时间:2011-06-08 10:13:18

标签: php ternary-operator php-5.2

我刚刚将一些旧的PHP文件上传到新服务器,并在速记三元操作上得到解析错误(意外':')。例如:

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

php版本是5.2.16代码中充斥着这些简写?:,所以在更改它们之前,我想我会看到是否有人对此有所了解,因为我现在还没有使用PHP一段时间。

2 个答案:

答案 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";

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