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

PHP 將 stdClass Object 轉換為陣列的三種方法

     編輯:PHP 綜合知識

方法一:遞迴轉型函式(通用、支援巢狀)

function object_to_array($data) {
    if (is_object($data)) {
        $data = (array) $data;
    }
    if (is_array($data)) {
        foreach ($data as $key => $value) {
            $data[$key] = object_to_array($value);
        }
    }
    return $data;
}

優點:不依賴編碼,能處理多層巢狀物件。缺點:大量資料時效能較差。

方法二:JSON 中介轉換(簡潔、效能佳)

$array = json_decode(json_encode($object), true);

原理:json_encode 將物件序列化為 JSON 字串,json_decode(..., true) 直接解碼為關聯陣列。
⚠️ 限制:資料必須為 UTF-8 編碼;資源型別、循環參考會失敗。

方法三:效能優化版 JSON 轉換(大量資料適用)

function object2array(&$object) {
    $object = json_decode(json_encode($object), true);
    return $object;
}

實測 10 萬筆資料,遞迴法需 3 秒,JSON 法僅 0.1 秒。非 UTF-8 資料請先 iconv 轉碼。

選擇建議

場景推薦方法
一般用途、資料量小、編碼不確定方法一
大量資料、確定 UTF-8、追求速度方法二/三
含資源型別或循環參考僅能用方法一

補充:取得公開屬性

若只需公開屬性,亦可用 get_object_vars($obj) 直接取得陣列。

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