print_r($array) mencetak array atau objek beserta key dan nilainya dalam bentuk yang mudah dibaca. var_dump($value) mencetak struktur yang sama ditambah tipe dan panjang setiap nilai. Pakai print_r untuk melihat isi sebuah array, dan var_dump kalau kamu perlu tahu apakah sebuah nilai itu "1" atau 1.
Bandingkan kedua output untuk admin: print_r tidak mencetak apa pun setelah tanda panah, sedangkan var_dump mencetak bool(false). Perbedaan itulah alasan utama memakai var_dump saat debugging.
print_r vs var_dump vs var_export
Ketiga fungsi ini menampilkan data yang sama dengan tingkat detail yang berbeda:
print_r | var_dump | var_export | |
|---|---|---|---|
| Menampilkan tipe | tidak | ya | sebagai literal PHP |
false, null, "" | tidak mencetak apa pun | bool(false), NULL, string(0) "" | false, NULL, '' |
| Bisa mengembalikan string | print_r($x, true) | tidak | var_export($x, true) |
| Output-nya PHP yang valid | tidak | tidak | ya |
| Beberapa nilai dalam satu panggilan | tidak | var_dump($a, $b) | tidak |
print_r paling mudah dibaca, var_dump paling presisi, dan var_export memberimu kode yang bisa ditempel kembali ke dalam file.
Mendapatkan output print_r sebagai string
Berikan true sebagai argumen kedua, dan print_r mengembalikan teksnya alih-alih mencetaknya. Begitulah cara menulis array ke file log atau memasukkannya ke dalam pesan yang lebih panjang.
var_export($value, true) mengembalikan string dengan cara yang sama. var_dump selalu mencetak, jadi untuk menangkap output-nya kamu butuh output buffering: ob_start(); var_dump($x); $text = ob_get_clean();.
Menampilkan array dengan rapi di HTML memakai pre
Di browser, pergantian baris dan spasi dari print_r menyatu menjadi satu baris panjang, karena HTML mengabaikan whitespace. Bungkus output-nya dengan <pre> untuk mempertahankan tata letaknya. Jalankan ini lalu lihat tab Halaman.
htmlspecialchars menjadi penting begitu datanya mungkin berisi < atau &, misalnya input pengguna: tanpa fungsi itu, browser akan memperlakukan teks tersebut sebagai HTML. Untuk data yang kamu kirim ke JavaScript atau API, bentuk json_encode sering kali paling berguna.
Menampilkan beberapa nilai sekaligus
var_dump menerima berapa pun argumen dan mencetaknya satu per satu, sehingga praktis untuk membandingkan dua nilai berdampingan.
Output-nya menunjukkan kenapa == menganggap keduanya sama dan === tidak: yang satu string(2) "42", yang lain int(42).
Menampilkan objek
Ketiga fungsi ini juga bisa mencetak objek. var_dump dan print_r menandai property private dan protected ([label:Point:private]), yang membantu saat sebuah property seolah-olah hilang.
#1 di output var_dump adalah id objek itu. Dua variabel yang menampilkan id yang sama menunjuk ke objek yang sama.
Kesalahan umum: echo pada array
echo mengubah argumennya menjadi string. Array tidak punya bentuk string, jadi PHP mencetak kata Array dan memunculkan warning:
<?php
$colors = ["red", "green", "blue"];
echo $colors;
PHP mencetak:
Warning: Array to string conversion in /home/index.php on line 3
Array
Cetak isinya dengan salah satu fungsi di atas, atau gabungkan sendiri nilai-nilainya:
implode untuk menampilkan list kepada pengguna, json_encode untuk log dan API, dan print_r atau var_dump untuk debugging-mu sendiri.
Pertanyaan yang sering diajukan
Apa bedanya var_dump dan print_r?
print_r menampilkan key dan nilai dalam bentuk yang singkat dan mudah dibaca. var_dump juga menampilkan tipe dan panjang setiap nilai, seperti string(3) "Ada" dan bool(false), jadi itulah yang dipakai kalau tipenya penting. print_r(false) tidak mencetak apa pun, sedangkan var_dump(false) mencetak bool(false).
Bagaimana cara mendapatkan output print_r sebagai string?
Berikan true sebagai argumen kedua: $text = print_r($array, true); mengembalikan teksnya alih-alih mencetaknya, jadi kamu bisa menulisnya ke log dengan error_log($text) atau menyimpannya di variabel. var_export($value, true) bekerja dengan cara yang sama; var_dump tidak punya opsi seperti itu.
Bagaimana cara menampilkan array dengan rapi di browser?
Bungkus output-nya dengan tag <pre> supaya browser mempertahankan pergantian baris dan indentasinya: echo '<pre>' . print_r($array, true) . '</pre>';. Escape dengan htmlspecialchars kalau datanya bisa berisi HTML.
Kenapa echo pada array mencetak Array?
echo mengubah argumennya menjadi string, dan array berubah menjadi kata Array dengan warning "Array to string conversion". Pakai print_r, var_dump, implode(', ', $arr), atau json_encode($arr) untuk mencetak isinya.
Apa fungsi var_export di PHP?
Fungsi ini mencetak sebuah nilai sebagai kode PHP yang valid, misalnya array ( 0 => 'a', ), yang bisa kamu tempel kembali ke dalam script. Dengan true sebagai argumen kedua, fungsi ini mengembalikan kodenya sebagai string, dan begitulah cara beberapa tool menulis file konfigurasi cache.