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

Pau*_*sey 31 php syntax ternary-operator php-5.2

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

$y = $x ?: "Some default";
Run Code Online (Sandbox Code Playgroud)

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

aza*_*zat 63

这仅在PHP 5.3之后可用

表达式(expr1)?(表达式2):(表达式3)的计算结果为如果值为expr2 expr1求到TRUE,和表达式3如果expr1的计算结果为FALSE.

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

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

或更有用但注释中的注释:http: //www.php.net/manual/en/control-structures.if.php#102060


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

  • 不,它不能是PHP 5.2.x. 也许在你的PHP版本中工作这个`$ a = $ foo?'foo':'bar'`? (3认同)
  • PHP 5.2.x的简写需要空值,如下面的答案,但上述应该在PHP 5.3中正常工作. (2认同)