Невозможно использовать возвращаемое значение метода в контексте записи

При возникновении ошибки возникает следующее:

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)

Как я могу это исправить?

Ответ 1

Замените первый оператор if на if( ! $this->session->userdata('user_id') ).

Функция empty проверяет, является ли переменная пустой, но userdata является функцией. Кроме того, для вашей информации, согласно документации CodeIgniter, функция userdata возвращает FALSE, если элемент не существует, а это означает, что если user_id не существует в вашем сеансе, будет выполнен код в else.

Ответ 2

Если вы используете библиотеку сессий codeigniter, вам не нужно проверять свои данные  codeigniter уже делает это для вас.  если $this -> session -> userdata( 'user_id') пуст или не установлен, он будет возвращен как false. Так что просто код что-то вроде этого

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

Ответ 3

Функция empty() не может использоваться таким образом. Он ожидает ссылочный аргумент, но не возвращает прямую функцию. Возврат функции не считается переменной, которая может передаваться по ссылке.

$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)

лучше вместо if (! $this → session → userdata ('user_id'))

потому что иногда он будет делать ошибку