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