首頁 >後端開發 >php教程 >如何有效率地將 PHP stdClass 物件轉換為陣列?

如何有效率地將 PHP stdClass 物件轉換為陣列?

DDD
DDD原創
2024-11-20 12:10:10305瀏覽

How to Efficiently Convert a PHP stdClass Object to an Array?

在 PHP 中將 stdClass 轉換為陣列

問題:

我需要將 PHP stdClass 物件轉換為陣列。但是,嘗試使用(陣列)轉換、json_decode(true) 和 json_decode() 會導致空數組。如何有效地執行此轉換?

答案:

惰性單行方法

為了稍微降低效能,您可以利用JSON簡潔地實現這種轉換的方法:

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

該方法首先將物件編碼為JSON 字串,然後將其解碼回數組。

將 stdClass 轉換為 Array

$array = (array) json_decode(json_encode($booking));

此方法傳回索引數組,而不保留屬性名稱。

將 stdClass 轉換為關聯數組

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

透過將 true 作為第二個參數傳遞給 json_decode,您可以將物件轉換為關聯數組,保留屬性名稱。

自訂函數(遞歸)

如果效能至關重要,您可以實作自訂遞歸函數以將物件轉換為陣列:

function object_to_array($object) {
  if (is_object($object)) {
    $object = get_object_vars($object);
  }

  if (is_array($object)) {
    return array_map(__FUNCTION__, $object);
  } else {
    return $object;
  }
}

$array = object_to_array($booking);

以上是如何有效率地將 PHP stdClass 物件轉換為陣列?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn