我刚刚把一些旧的PHP文件上传到了新的服务器上,但是在使用短语法三元操作时出现了解析错误 (Unexpected ':')。例如:
$y = $x ?: "Some default";
我的php版本是5.2.16。代码中到处都是这些简写的"?:",所以在修改它们之前,我想看看是否有人知道这方面的情况,因为我已经有一段时间没有使用PHP了。
$y = $x ?: "Some default";
我的php版本是5.2.16。代码中到处都是这些简写的"?:",所以在修改它们之前,我想看看是否有人知道这方面的情况,因为我已经有一段时间没有使用PHP了。
自 PHP 5.3 版本开始支持此语法。
表达式 (expr1) ? (expr2) : (expr3) 如果 expr1 求值为TRUE,则返回 expr2,否则返回 expr3。
从 PHP 5.3 开始,三元运算符可以省略中间部分。 表达式 expr1 ?: expr3 如果 expr1 求值为TRUE,则返回 expr1,否则返回 expr3。1
有关更多背景,请参阅此示例。
或者一个在注释中提供更有用信息的链接: http://www.php.net/manual/en/control-structures.if.php#102060
$a = $foo ? 'foo' : 'bar'
? - azatexpr1
评估为 true
,那么将返回该评估的结果。换句话说,如果 expr1
是真值,它将不会再次被评估,但表达式的结果将像第一次评估时一样被使用。 - XedinUnknown由于您正在使用php 5.2.16,因此您的三元运算符需要2个选项,例如
$y = $x? "???" : "Some default";
变量 = 条件 ? 真值 : 假值 ;
$y = $x ? $x : 'default';
。 - igorw?:
只能在PHP 5.3及以上版本中使用。 - John Carter