Php Can';在写上下文中不使用方法返回值

Php Can';在写上下文中不使用方法返回值,php,codeigniter,Php,Codeigniter,以下if条件导致错误: if( !empty ($this -> session -> userdata( 'user_id') ) ) { $user_id = $this -> session -> userdata( 'user_id' ); } else { $error = "ID doesn't exist"; } 我发现以下错误: Fatal error: Can't use method return value in write

以下if条件导致错误:

if( !empty ($this -> session -> userdata( 'user_id') ) )
{
    $user_id = $this -> session -> userdata( 'user_id' );
} 
else 
{ 
    $error = "ID doesn't exist";
}
我发现以下错误:

Fatal error: Can't use method return value in write context in (line number)

如何修复它?

将第一个
if
语句替换为
if(!$this->session->userdata('user\u id'))

函数检查变量是否为空,但
userdata
是否为函数。此外,根据提供给您的信息,
userdata
函数在项目不存在时返回
FALSE
,这意味着如果会话中不存在
user\u id
,将执行
else
中的代码。

函数empty()不能以这种方式使用。它需要引用参数,但不需要直接函数返回。函数返回不被视为变量,它可以通过引用传递

$test = $this->session->userdata('user_id');

if(!empty($test))
    $user_id = $test;
else
    $error = "ID doesn't exist";

如果您正在使用codeigniter的会话库,则不需要检查数据 codeigniter已经为你做了。 如果
$this->session->userdata('user\u id')
为空或未设置,则它将返回为false。就是这样的代码

$user_id = $this->session->userdata('user_id');
if(!$user_id){  }else{ $error = 'ID doesn't exist'; }
如果($this->session->userdata('user_id')>0)

如果(!$this->session->userdata('user\u id'))


因为有时候它会出错

有时候这个错误是由PHP版本引起的。最新的Codeigniter版本支持PHP7.0以上。你只需要将PHP版本从cpanel更新到7.0或以上。希望这能帮助其他使用最新Codeigniter的人。我在下面的一行中也有同样的问题

    if($ci->session->userdata('front_logged_in') && !$ci->session->userdata('front_logged_in')){

(行号)
指向哪里?谢谢。错误太模糊了,我不确定它指的是什么。很好的解释——“userdata是一个函数”。这是初学者需要的解释。谢谢!