错误:将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] => 首页领队 [size] => 297*140 [pic] => ./upload/20130302093443.jpg [state] => 0 ) )输出开始写的方法是:$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关联数组,用[]即可