33

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

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

php 版本是 5.2.16 代码中到处都是这些简写?

4

2 回答 2

72

这仅在 PHP 5.3 之后可用

表达式(expr1) ? (expr2) : (expr3)如果 expr1 评估为 TRUE 则评估为 expr2 ,如果 expr1 评估为FALSE则为 expr3 。

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

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

或更有用但在评论中注明: http ://www.php.net/manual/en/control-structures.if.php#102060


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

于 2011-06-08T10:14:02.540 回答
0

由于您使用的是 php 5.2.16,因此您的三元组需要 2 个选项,例如

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

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

于 2011-06-08T10:15:42.210 回答