Can't use method return value in write context

2019-02-12 09:29发布

问题:

The following if condition is causing an error:

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

I get following error:

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

How can I fix it?

回答1:

Replace the first if statement with if( ! $this->session->userdata('user_id') ).

The empty function check if a variable is empty but userdata is a function. Additionally, for your information, according to the CodeIgniter documentation, the userdata function returns FALSE if the item doesn't exist, which means that if user_id doesn't exist in your session, the code in the else will be executed.



回答2:

If you are using the sessions library of codeigniter then you don't need to check your data codeigniter already does that for you. if $this -> session -> userdata( 'user_id') is empty or not set then it will be returned as false. So just a code something like that

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


回答3:

Function empty() cannot be used in this way. It expects reference argument, but not a direct function return. A function return is not considered a variable, which can be passed by reference.

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

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


回答4:

if( ($this -> session -> userdata( 'user_id') > 0)

it is more better instead of if( !$this -> session -> userdata( 'user_id') )

because sometimes it will make error