Php 分析错误:语法错误,意外';:';

Php 分析错误:语法错误,意外';:';,php,Php,任何人都可以帮助我,这个功能是正确的工作在我的本地主机,但当我做了现场我面临这个问题 private function _get_token( $userData = array() ) { $token = sha1(uniqid()); $oldData = get_option(self::PREFIX .'data') ?: array(); //Error on this line $data = array(); $

任何人都可以帮助我,这个功能是正确的工作在我的本地主机,但当我做了现场我面临这个问题

 private function _get_token( $userData = array() ) {
        $token = sha1(uniqid());

        $oldData = get_option(self::PREFIX .'data') ?: array(); //Error on this line
        $data = array();
        $data[$token] = $userData;
        update_option(self::PREFIX .'data', array_merge($oldData, $data));

        return $token;
    }

问题是关于
?:
,这是三元运算符,因此您需要设置条件的值为true,也为false,在您的情况下,您只需将值设置为false

这是你的

$oldData = get_option(self::PREFIX .'data') ?: array();
应该是:

$oldData = get_option(self::PREFIX .'data') ? get_option(self::PREFIX .'data') : array();

我想是的,让我知道这是否是问题所在。

?:
为什么两者都相互关联??三元运算符语法是:
$var=(5>2?true:false);//返回true
服务器上的PHP版本是什么?根据,在PHP5.3之前,不允许省略三元运算符的中间部分。这是一个很好的描述性答案,它可以解决错误,但我认为最好只使用一次
get\u option()
(取决于
get\u option()
函数的功能)。因此,在三元运算符赋值之前检查分配给
$oldData
var的值可能是更有效的解决方案。但我不明白为什么这个错误不会出现在localhost上,因为在localhost上您有最新的php版本,允许?:@FrayneKonok是的,我确定。您可以在这里检查,因为PHP5.3,可以省略三元运算符的中间部分。表达式expr1?:如果expr1的计算结果为真,则expr3返回expr1,否则返回expr3