Fatal error: Cannot use object of type stdClass as array in ...
資料庫查詢結果預設回傳 **物件陣列**(`stdClass`),而非關聯陣列。嘗試用陣列語法 `$row['field']` 存取物件屬性會觸發此錯誤。
$query = $this->db->query("SELECT * FROM articles");
$rows = $query->result(); // 預設回傳 stdClass 物件陣列
// ❌ 錯誤寫法
echo $rows[0]['title']; // stdClass 不能當陣列用
// ✅ 正確
echo $rows[0]->title;
echo $rows[0]->content;
// 方法 A:result_array()
$rows = $query->result_array();
echo $rows[0]['title']; // ✅ 正常
// 方法 B:row_array() 單筆
$row = $query->row_array();
echo $row['title'];
| 方法 | 回傳型別 | 存取語法 | 適用場景 |
|---|---|---|---|
result() | array of stdClass | $row->field | 多筆、習慣物件語法 |
result_array() | array of array | $row['field'] | 多筆、需陣列操作/JSON |
row() | stdClass / null | $row->field | 單筆、物件語法 |
row_array() | array / null | $row['field'] | 單筆、陣列語法 |
// 物件寫法
foreach ($query->result() as $row) {
echo $row->title;
}
// 陣列寫法
foreach ($query->result_array() as $row) {
echo $row['title'];
}
// 確認變數型別
var_dump($rows[0]);
// 輸出: object(stdClass)#1 (3) { ["id"]=> string(1) "1" ["title"]=> string(6) "標題" ... }
public function get_articles() {
return $this->db->get('articles')->result_array();
}