【发布时间】:2014-07-01 20:24:36
【问题描述】:
我试图弄清楚为什么类中的三元运算符不会解析。我认为一个例子是展示这一点的最清晰的方式。
这很好用:
$a = array(
'a' => 'foo',
'b' => 1 ? 'true' : 'false',
'c' => 'baz',
);
print_r($a);
/* Array
(
[a] => foo
[b] => true
[c] => baz
)
*/
但这甚至不解析:
<?php
class Junk {
private static $a = array(
'a' => 'foo',
'b' => 1 ? 'true' : 'false',
'c' => 'baz',
);
public static function printA() {
print_r(self::$a);
}
}
Junk::printA();
我收到以下消息:
PHP Parse error: syntax error, unexpected '?', expecting ')' in junk.php on line 6
作为记录,它在数组声明之外也不起作用:
private static $a = 1 ? 'true' : 'false';
给出同样的错误信息。
为什么这不起作用?它只是解析引擎中的一些奇怪的错误吗?我完全感到困惑。 manual on ternary operators 声明运算符是一个表达式,它应该始终在数组赋值的右侧工作。我使用的是 PHP 5.4.28,如果这有什么不同的话。
【问题讨论】:
标签: php