2011-07-18 31 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(! $this->session->userdata('user_id'))替換第一個if聲明。

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

如果您正在使用笨的會議庫,那麼你就不需要檢查數據 笨已經不適合您。 如果$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'))

,因爲有時它會出錯