錯誤:将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關聯數組,用[]即可