Saya punya masalah untuk mengubah objek stdClass ke array. Saya telah mencoba dengan cara ini:
return (array) $booking;
atau
return (array) json_decode($booking,true);
atau
return (array) json_decode($booking);
Array sebelum para pemain penuh dengan satu record, setelah saya coba cast itu kosong. Bagaimana cara mencetak / mengubahnya tanpa menghapus barisnya?
array sebelum dilemparkan:
array(1) { [0]=> object(stdClass)#23 (36) { ["id"]=> string(1) "2" ["name"]=> string(0) "" ["code"]=> string(5) "56/13" } }
setelah pemain kosong NULL jika saya mencoba membuat var_dump($booking);
Saya juga sudah mencoba fungsi ini tetapi selalu kosong:
public function objectToArray($d) {
if (is_object($d)) {
// Gets the properties of the given object
// with get_object_vars function
$d = get_object_vars($d);
}
if (is_array($d)) {
/*
* Return array converted to object
* Using __FUNCTION__ (Magic constant)
* for recursive call
*/
return array_map(__FUNCTION__, $d);
}
else {
// Return array
return $d;
}
}
return
. Dan berlarijson_decode
array tampaknya sangat menyedihkan bagi saya, mungkin duduk terlalu lama di depan komputer dan sekarang saatnya untuk istirahat?var_dump($booking);
keluaranNULL
?var_dump()
sebelum casting. Jangan gunakan kembali nama variabel yang sama btw. jika$booking
ada sesuatu sebelum casting, itu pasti sesuatu sebelum casting dan bukan sesuatu yang berbeda setelahnya. Perbedaan antara input dan pemrosesan variabel jika tidak Anda mengalami masalah yang Anda tidak mengerti lagi apa yang Anda lakukan di sana.Jawaban:
The malas satu lapis
Anda dapat melakukan ini dalam satu liner menggunakan metode JSON jika Anda bersedia kehilangan sedikit kinerja (meskipun beberapa telah melaporkan itu lebih cepat daripada iterasi melalui objek secara rekursif - kemungkinan besar karena PHP lambat dalam memanggil fungsi ). " Tapi aku sudah melakukan ini, " katamu. Tidak persis - Anda digunakan
json_decode
pada array, tetapi Anda harus menyandikannya denganjson_encode
terlebih dahulu.Persyaratan
The
json_encode
danjson_decode
metode. Ini secara otomatis dibundel dalam PHP 5.2.0 dan lebih tinggi. Jika Anda menggunakan versi yang lebih lama ada juga perpustakaan PECL (yang mengatakan, dalam hal ini Anda harus benar - benar memperbarui instalasi PHP Anda. Dukungan untuk 5.1 berhenti pada 2006.)Mengkonversi
array
/stdClass
->stdClass
Mengkonversi
array
/stdClass
->array
Manual menentukan argumen kedua
json_decode
sebagai:Karenanya baris berikut akan mengubah seluruh objek Anda menjadi sebuah array:
sumber
(array) $booking;
dalamvar_dump
adalahNULL
(seperti yang ditulis oleh OP), coba tebak kode ini akan kembali?NULL
setelah casting sebagai array. Saya pikir OP berartiNULL
setelah menggunakanjson_decode($array)
yang masuk akal per manual . NULL dikembalikan jika json tidak dapat diterjemahkanjson_decode()
pada array.json_decode
harus digunakan pada string JSON. Oleh karena itu, jika kita menyandikannya sebagai string JSON terlebih dahulu (json_encode
) dan kemudian mendekodekannya (menggunakan string JSON kami), maka itu berfungsi dengan baik.gunakan fungsi ini untuk mendapatkan kembali array standar dari tipe yang Anda cari ...
sumber
Karena array sebelum Anda melemparkannya, casting itu tidak masuk akal.
Anda mungkin ingin pemain rekursif, yang akan terlihat seperti ini:
Pemakaian:
Hasil sebelum:
Hasil setelah:
catatan:
Diuji dan bekerja dengan array kompleks di mana objek stdClass dapat berisi objek stdClass lainnya.
sumber
Silakan gunakan fungsi php berikut untuk mengubah stdClass php ke array
sumber
Fungsi ini berfungsi untuk saya:
Referensi: http://carlofontanos.com/convert-stdclass-object-to-array-in-php/
sumber
Gunakan fungsionalitas tipe cor bawaan, cukup ketik
sumber
Googled saja, dan temukan di sini fungsi praktis yang berguna untuk mengubah objek stdClass ke array secara rekursif.
EDIT : Saya memperbarui jawaban ini dengan konten dari sumber tertaut (yang juga berubah sekarang), terima kasih kepada mason81 karena telah menyarankan saya.
sumber
Ini adalah versi jawaban Carlo yang dapat digunakan di kelas:
sumber
Kode berikut akan membaca semua email & mencetak Subjek, Badan & Tanggal.
Ini menghasilkan yang berikut:
Setelah bergumul dengan berbagai saran, saya menggunakan trial & error untuk menghasilkan solusi ini. Semoga ini bisa membantu.
sumber
Berikut adalah fungsi Object to Array terbaik yang saya miliki - bekerja secara rekursif:
$ clean_array = object_to_array ($ object_data_here);
sumber