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

发布于 2024-11-14 07:45:08 字数 196 浏览 4 评论 0原文

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

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

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

I've just uploaded some old PHP files to a new server and am getting parse errors (Unexpected ':') on shorthand ternary ops. eg:

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

php version is 5.2.16 The code is littered with these shorthand ?:, so before changing them all I thought I'd see if anyone knows anything about this as I've not used PHP for a while now.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

给妤﹃绝世温柔 2024-11-21 07:45:08

仅自 PHP 5.3 起可用

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

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

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

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


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

This is only available since PHP 5.3

The expression (expr1) ? (expr2) : (expr3) evaluates to expr2 if expr1 evaluates to TRUE, and expr3 if expr1 evaluates to FALSE.

Since PHP 5.3, it is possible to leave out the middle part of the ternary operator. Expression expr1 ?: expr3 returns expr1 if expr1 evaluates to TRUE, and expr3 otherwise.1

See this example for more context.

or a more useful but note in the comments:
http://www.php.net/manual/en/control-structures.if.php#102060


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

起风了 2024-11-21 07:45:08

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

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

Variable = condition ?真值:假值;

Since you are using php 5.2.16, your ternary requires 2 options e.g

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

Variable = condition ? true value : false value ;

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文