天天看點

**PHP錯誤Cannot use object of type stdClass as array in錯誤的

錯誤:将PHP對象類型當做了PHP數組  解決方法:用對象操作符->

今天在PHP輸出一個二維數組的時候,出現了“Fatal error: Cannot use object of type stdClass as array in……”。

這個二維數組是這樣的:

Array ( 

 [0] => stdClass Object ( 

  [id] => 1 

  [title] => 首頁招聘 

  [size] => 297*140 

  [pic] => ./upload/20130302093535.jpg 

  [state] => 0 ) 

 [1] => stdClass Object ( 

  [id] => 2 

  [title] => 首頁領隊 

  [pic] => ./upload/20130302093443.jpg 

 )

輸出開始寫的方法是:$pic[0][title]

結果就出現上面的錯誤。

其實,數組中是傳回的是一個對象,不能直接用[]來顯示,正确的輸出方法是:$pic[0]->title (不用加引号 )

錯誤的:

foreach($user_list as $user_key => $user_value){      
foreach ($data as $data_key => $data_value){      
if($user_list[$user_key]['user_mobile'] === $data_key){      
$user_list[$user_key]['contacts_username'] = $data_value;      
break;      
}      
}      
}      

正确:

$user_list =$this->m_user->match_user_mobile($column_str, $mobile_array, $page_num, $page_size);      
//周遊$user_list,追加通訊錄的使用者名      
//周遊二維數組      
foreach($user_list as $user_key => $user_value){      
foreach ($data as $data_key => $data_value){      
if($user_list[$user_key]->user_mobile === $data_key){      
$user_list[$user_key]->contacts_username = $data_value;      
break;      
}      
}      
}      
--------------------------------------------      
public function match_user_mobile($column_str, $mobile_array,  $page_num, $page_size)      
{      
$this->db->select($column_str);      
$this->db->from('xm_user');      
$this->db->where_in('user_mobile', $mobile_array);      
//$this->db->limit(10, 20);  生成: LIMIT 20, 10 (僅限MySQL中。其它資料庫有稍微不同的文法)      
$this->db->limit($page_size, ($page_num - 1)*$page_size);      
$query = $this->db->get();      
//var_dump($query);  測試      
//row_array取一行資料;result_array取多行資料,傳回關聯數組;result傳回對象數組      
return $query->result_array();      
}      
總結:      
如果資料庫用result傳回,那麼就是PHP對象數組,需要用對象操作符->      
如果是result_array傳回,那麼就是PHP關聯數組,用[]即可