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

问题描述 投票:0回答:2

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

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

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

php syntax ternary-operator php-5.2
2个回答
75
投票

此功能仅自 PHP 5.3 起可用

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

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

请参阅此示例了解更多上下文。

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


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


-2
投票

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.