2017-06-20 69 views
0

我正在使用Codeigniter和活動記錄並面臨一個奇怪的問題。試圖獲取非對象的屬性與有效對象顯示

我有下面的PHP代碼:

foreach ($list_all->result() as $all_Array){ 
    $current_r = $all_Array->id_r; 
    $get_ongoing_loan_player = $this->get_ongoing_loan_player($current_r); 
    $ongoing_loan_info = $get_ongoing_loan_player->row(); 
    var_dump($ongoing_loan_info); 
    $daily_payment_player = $ongoing_loan_info->daily_payment; 
    ... 
} 

get_ongoing_loan_player看起來是這樣的:

protected function get_ongoing_loan_player($currentID){ 
    $this->db->select('daily_payment'); 
    $this->db->from('game_signed_loans'); 
    $this->db->where('id_r', $currentID); 
    $query = $this->db->get(); 
    return $query; 
} 

但是PHP拋出一個錯誤:

A PHP Error was encountered Severity: Notice Message: Trying to get property of non-object

var_dump返回如下:

object(stdClass)#38 (1) { ["daily_payment"]=> string(5) "38670" } NULL

請注意括號外的末尾有NULL。我一直無法找到這個NULL的解釋。

我剛纔有一個非常類似的功能,它工作正常,但在那個NULL不存在。我很確定這是由此造成的。

我不需要加載模型,因爲它是在同一頁(我試過它並沒有幫助)。

我的結果是一個對象,而不是一個數組,所以我無法理解的錯誤信息......

+2

我猜測通過foreach的第一次迭代有一個對象。第二次迭代,它是一個空值,所以它會拋出錯誤。 – aynber

+0

對!沒想到這是迭代打印NULL。修復!將您的建議添加爲答案,以便我可以接受它。謝謝! – remyremy

回答

1

在第一次迭代,$ongoing_loan_info是一個對象,所以它打印出來,並正常工作。在第二次迭代中,$ongoing_loan_info爲空,因此會引發錯誤。在嘗試從中獲取數據之前,您需要確保該行存在。這個三元組將玩家設置爲0,如果它是空的,或者你可以用任何你想要的替換它。

$daily_payment_player = $ongoing_loan_info ? $ongoing_loan_info->daily_payment : 0; 
相關問題