2011-07-18 15 views
11

をメソッドの戻り値を使用することはできません:は、条件がエラーの原因となっている場合は、次の書き込みコンテキストで

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

'(行番号)'はどこに指していますか? – MeLight

答えて

26

ifの最初の文をif(! $this->session->userdata('user_id'))に置き換えます。

empty関数は、変数が空であるが、userdataが関数であるかどうかをチェックします。また、CodeIgniter documentationに従って、情報がある場合、userdata関数は、項目が存在しない場合はFALSEを返します。つまり、user_idがセッションに存在しない場合、elseのコードが実行されます。

+0

ありがとうございます。エラーは非常に曖昧です、私はそれが何を指していたのか分かりませんでした。 – yaz

+0

美しい正当化 - "userdataは関数です"。これは、スターターが必要とする説明のようなものです。ありがとう! – itsols

2

関数empty()は、この方法では使用できません。それは参照引数を期待していますが、直接関数の戻りはありません。関数の戻り値は、参照渡し可能な変数とはみなされません。

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

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

あなたは、あなたが CodeIgniterには、すでにあなたのためのことを行い、あなたのデータをチェックする必要はありませんCodeIgniterのセッションのライブラリを使用している場合。 $this -> session -> userdata('user_id')が空であるか設定されていない場合は、falseとして返されます。その

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

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

のようなので、単にコードの何かが、それは、より優れた代わりの場合($この - !>セッション - >ユーザデータ( 'user_idは'))

時にはそれがするので、エラーを作ります

関連する問題