Terkadang lebih mudah untuk meminta orang lain untuk memahami lebih baik daripada membaca manual.
Deepak Lamichhane
11
@Jawaban Common Sense Anda SO seringkali lebih jelas, lebih ringkas, dapat ditindaklanjuti dan pada dasarnya selalu lebih mudah untuk dirujuk daripada manual PHP.
Mark Fox
Jawaban:
194
var_dump adalah untuk keperluan debugging. var_dumpselalu mencetak hasilnya.
print_r juga untuk tujuan debugging, tetapi tidak termasuk tipe anggota. Ini adalah ide yang baik untuk digunakan jika Anda mengetahui jenis elemen dalam array Anda, tetapi bisa menyesatkan sebaliknya. print_rsecara default mencetak hasilnya, tetapi memungkinkan kembali sebagai string sebagai gantinya dengan menggunakan$returnparameteropsional.
Array([0]=>[1]=>[2]=>42[3]=>Array([0]=>42))
var_export mencetak kode php yang valid. Berguna jika Anda menghitung beberapa nilai dan ingin hasilnya sebagai konstanta di skrip lain. Catatan yangvar_exporttidak dapat menangani siklus referensi / array rekursif, sedangkanvar_dumpdanprint_rperiksa ini. var_exportsecara default mencetak hasilnya, tetapi memungkinkan kembali sebagai string sebagai gantinya dengan menggunakan$returnparameteropsional.
Perhatikan bahwa var_export, karena sifatnya, akan mati kematian rekursif yang mengerikan pada, well, array rekursif. print_rdan var_dump(meskipun, tidak begitu yakin tentang yang terakhir, karena saya biasanya tidak menggunakannya) tidak memiliki masalah itu. Jadi jangan var_export($_GLOBALS);, misalnya (yang berisi dirinya sendiri). :)
pinkgothic
@trotter Saya selalu berpikir komentar akan menjelaskan keingintahuan itu dengan baik, tapi begitulah, menambahkan catatan singkat untuk jawabannya.
phihag
1
Harus ditambahkan bahwa Anda dapat membuat print_r () dan var_export () mengembalikan sebuah string alih-alih mengeluarkannya, sementara var_dump () tidak dapat melakukannya. Juga, saya tidak suka var_export () karena membingungkan - jika Anda mencoba untuk mengekspor SOMECONST konstan yang tidak terdefinisi, Anda hanya akan mendapatkan kembali string teks 'SOMECONST'. Jadi ia tidak akan mengatakan NULL, 0, "", tetapi itu benar-benar akan menganggap itu string (dan saya kira melempar PEMBERITAHUAN juga).
userfuser
1
var_export baik untuk mewakili string dengan aman, seperti perlindungan quote / backslash.
dkellner
1
Secara pribadi saya lebih suka var_dumpoutput. Sayang sekali itu tidak memungkinkan mengembalikan output sebagai string. Karena itu saya dapat menghubungkan sentimen @ iconoclast dalam komentar di atas. Tetapi harus memilih var_exportlebih var_dumpuntuk kasus penggunaan ini dapat diterima dengan saya. Untuk kelengkapan, perhatikan permintaan fitur terkait ini .
Paul van Leeuwen
3
var_dumpdan var_exporthubungkan seperti ini (dari manual )
var_export () mendapat informasi terstruktur tentang variabel yang diberikan. Ini mirip dengan var_dump () dengan satu pengecualian: representasi yang dikembalikan adalah kode PHP yang valid.
Mereka berbeda dari print_ryang var_dumpmengekspor lebih banyak informasi, seperti tipe data dan ukuran elemen.
Jawaban:
var_dump adalah untuk keperluan debugging.
var_dump
selalu mencetak hasilnya.print_r juga untuk tujuan debugging, tetapi tidak termasuk tipe anggota. Ini adalah ide yang baik untuk digunakan jika Anda mengetahui jenis elemen dalam array Anda, tetapi bisa menyesatkan sebaliknya.
print_r
secara default mencetak hasilnya, tetapi memungkinkan kembali sebagai string sebagai gantinya dengan menggunakan$return
parameteropsional.var_export mencetak kode php yang valid. Berguna jika Anda menghitung beberapa nilai dan ingin hasilnya sebagai konstanta di skrip lain. Catatan yang
var_export
tidak dapat menangani siklus referensi / array rekursif, sedangkanvar_dump
danprint_r
periksa ini.var_export
secara default mencetak hasilnya, tetapi memungkinkan kembali sebagai string sebagai gantinya dengan menggunakan$return
parameteropsional.Secara pribadi, saya pikir
var_export
adalah kompromi terbaik yang ringkas dan tepat.sumber
var_export
, karena sifatnya, akan mati kematian rekursif yang mengerikan pada, well, array rekursif.print_r
danvar_dump
(meskipun, tidak begitu yakin tentang yang terakhir, karena saya biasanya tidak menggunakannya) tidak memiliki masalah itu. Jadi janganvar_export($_GLOBALS);
, misalnya (yang berisi dirinya sendiri). :)var_dump
output. Sayang sekali itu tidak memungkinkan mengembalikan output sebagai string. Karena itu saya dapat menghubungkan sentimen @ iconoclast dalam komentar di atas. Tetapi harus memilihvar_export
lebihvar_dump
untuk kasus penggunaan ini dapat diterima dengan saya. Untuk kelengkapan, perhatikan permintaan fitur terkait ini .var_dump
danvar_export
hubungkan seperti ini (dari manual )Mereka berbeda dari
print_r
yangvar_dump
mengekspor lebih banyak informasi, seperti tipe data dan ukuran elemen.sumber