首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

PHP 錯誤解析:Cannot use object of type stdClass as array

     編輯:PHP 相關知識

開發 PHP 專案時,常遇到 Fatal error: Cannot use object of type stdClass as array 錯誤。這通常發生在將物件當作陣列存取時。本文透過實例解析原因與修正方法。

錯誤程式碼範例

function get_userinfo($id) {
    $sql = "Select * from @#_debbs where username='$id'";
    $result = mysql_query($sql) or die('e');
    if (mysql_num_rows($result)) {
        $rs = mysql_fetch_object($result);  // 取得物件
        return array($rs['sex'], $rs['born'], $rs['reg_time'], '/boke/'.$rs['my_photo'], $rs['id']); // 錯誤:用陣列語法存取物件
    } else {
        return array('參數錯誤','未知','未知','未知','未知','未知');
    }
}

原因分析

mysql_fetch_object() 回傳的是 物件(stdClass),屬性存取需用 -> 運算子(如 $rs->sex),而非陣列語法 ['key']。程式碼第 7 行取得物件,第 8 行卻嘗試以陣列方式讀取屬性,導致致命錯誤。

修正方法

將陣列存取改為物件屬性存取:

return array($rs->sex, $rs->born, $rs->reg_time, '/boke/'.$rs->my_photo, $rs->id);

或改用 mysql_fetch_assoc() 取得關聯陣列,即可維持原本陣列語法。

補充說明

  • mysql_fetch_object():回傳物件,屬性對應欄位名。
  • mysql_fetch_assoc():回傳關聯陣列,鍵值為欄位名。
  • mysql_fetch_array():同時包含數值索引與關聯索引。

根據需求選擇適當函式,避免型別不符錯誤。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved