Rumah >pembangunan bahagian belakang >tutorial php >Bagaimana dengan Cekap Menukar Objek PHP stdClass kepada Array?

Bagaimana dengan Cekap Menukar Objek PHP stdClass kepada Array?

DDD
DDDasal
2024-11-20 12:10:10296semak imbas

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

Menukar stdClass kepada Array dalam PHP

Soalan:

Saya perlu menukar objek PHP stdClass kepada tatasusunan . Walau bagaimanapun, percubaan menggunakan pemutus (array), json_decode(true), dan json_decode() telah menghasilkan tatasusunan kosong. Bagaimanakah saya boleh melaksanakan penukaran ini dengan berkesan?

Jawapan:

Kaedah Satu Pelapik Malas

Untuk prestasi yang sedikit terjejas, anda boleh memanfaatkan JSON kaedah untuk mencapai penukaran ini dengan cara yang ringkas:

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

Kaedah ini mula-mula mengekod objek ke dalam rentetan JSON dan kemudian menyahkodnya semula menjadi tatasusunan.

Menukar stdClass kepada Tatasusunan

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

Pendekatan ini mengembalikan tatasusunan diindeks tanpa mengekalkan nama sifat.

Menukar stdClass kepada Susunan Bersekutu

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

Dengan berlalu benar sebagai argumen kedua kepada json_decode, anda boleh menukar objek kepada tatasusunan bersekutu, mengekalkan nama sifat.

Fungsi Tersuai (Rekursif)

Jika prestasi adalah kritikal, anda boleh melaksanakan rekursif tersuai fungsi untuk menukar objek kepada tatasusunan:

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);

Atas ialah kandungan terperinci Bagaimana dengan Cekap Menukar Objek PHP stdClass kepada Array?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn