php var_dump () vs print_r ()

297

Apa perbedaan antara var_dump()dan print_r()dalam hal mengeluarkan array sebagai string?

di sebuah
sumber

Jawaban:

355

The var_dumpfungsi menampilkan terstruktur informasi tentang variabel / ekspresi termasuk yang tipe dan nilai . Array dieksplorasi secara rekursif dengan nilai indentasi untuk menunjukkan struktur. Ini juga menunjukkan nilai array dan properti objek mana yang merupakan referensi.

The print_r()menampilkan informasi tentang sebuah variabel dengan cara yang dapat dibaca oleh manusia. nilai-nilai array akan disajikan dalam format yang menunjukkan kunci dan elemen . Notasi serupa digunakan untuk objek.

Contoh:

$obj = (object) array('qualitypoint', 'technologies', 'India');

var_dump($obj) akan menampilkan output di bawah ini di layar.

object(stdClass)#1 (3) {
 [0]=> string(12) "qualitypoint"
 [1]=> string(12) "technologies"
 [2]=> string(5) "India"
}

Dan, print_r($obj)akan ditampilkan output di bawah ini di layar.

stdClass Object ( 
 [0] => qualitypoint
 [1] => technologies
 [2] => India
)

Info lebih lanjut

Sarfraz
sumber
76
print_r (null) tidak akan mengembalikan apa pun karena var_dump (null) mengembalikan NULL yang berguna saat debugging
rosh3000
7
Bisakah Anda memperluas jawaban Anda dengan 'var_export'?
joryl
1
Dua keuntungan dari var_dump () adalah bahwa informasi yang dibuang secara otomatis terlampir dalam elemen pra. Saat menggunakan var_dump () Anda dapat melihat bahwa setiap jenis memiliki warna sendiri. Meningkatkan keterbacaan.
Julian
3
@Julian hanya jika xdebug diinstal
Leif Neland
57

Umumnya, print_r( ) output lebih bagus, lebih ringkas dan lebih mudah dibaca, alias lebih bisa dibaca manusia tetapi tidak bisa menampilkan tipe data.

Dengan print_r()Anda juga dapat menyimpan output ke dalam variabel:

$output = print_r($array, true);

yang var_dump()tidak bisa dilakukan. Belum var_dump()bisa menampilkan tipe data.

gilzero
sumber
9
var_dump () dapat disimpan dalam variabel meskipun sedikit lebih buruk: stackoverflow.com/questions/139474/…
SgtPooki
7
Anda juga dapat menggunakan 'brother' var_export () jika Anda perlu menyimpan
CSᵠ
21

var_dump() akan menunjukkan jenis benda serta apa yang ada di dalamnya.

Jadi Anda akan mendapatkan => (string)"var" Contoh ada di sini.

print_r() hanya akan menampilkan konten.

Apakah output => "var" Contoh ada di sini.

David Yell
sumber
12
Saya pikir contoh yang lebih baik adalah var_dump(0.0);keluaran mana float(0)vs keluaran print_r(0.0);mana 0(karena itu mengarah pada kemungkinan jenis kebingungan) ...
ircmaxell
13

Jika Anda bertanya kapan Anda harus menggunakan apa, saya biasanya menggunakan print_r()untuk menampilkan nilai dan var_dump()ketika memiliki masalah dengan tipe variabel.

Danny Nimmo
sumber
8

var_dumpmenampilkan informasi terstruktur tentang objek / variabel. Ini termasuk jenis dan nilai. Seperti print_rarray berulang melalui dan indentasi.

print_rmenampilkan dapat dibaca manusia informasi yang tentang nilai-nilai dengan format yang menyajikan kunci dan elemen untuk array dan objek.

Hal yang paling penting untuk diperhatikan adalah var_dumptipe keluaran dan juga nilai sementara print_rtidak.

Josh K.
sumber
5

Perbedaan signifikan antara var_dumpdanprint_r

kedua fungsi tersebut membuang informasi tentang variabel , tetapi var_dumpbeberapa parameter yang akan dibuang, di mana print_rdapat mengambil dua parameter dari mana parameter pertama adalah variabel yang ingin Anda buang dan yang kedua adalah nilai boolean.

var_dumptidak dapat mengembalikan nilai apa pun itu hanya dapat membuang / mencetak nilai di mana print_r dapat mengembalikan informasi variabel jika kita menetapkan parameter kedua print_rmenjadi true . Nilai yang dikembalikan print_rakan dalam string format .

Informasi yang dicetak oleh print_rjauh lebih dalam format yang dapat dibaca di mana var_dumpmencetak nilai mentah.

print_rfungsi dapat digunakan dalam banyak konteks di mana karena var_dumpdapat digunakan dalam tujuan debugging terutama karena tidak dapat mengembalikan nilai.

Akshay Khale
sumber
1
vardumpmembutuhkan satu atau lebih argumen, dan masing-masing akan dibuang.
Uskup
@ bishop, ya Anda benar itu bisa membutuhkan lebih banyak argumen, tetapi tidak mengembalikan nilai apa pun
Akshay Khale
jadi perbaiki jawaban Anda?
Govind Rai
Sudah diperbaiki @GovindRai
Akshay Khale
"var_dump tidak dapat mengembalikan nilai apa pun"? Ya bisa. Agak. ob_start(); var_dump($var); $dump=ob_get_clean();
Sinus Mackowaty
3

Saya akan merekomendasikan menempatkan keluaran var_dump () atau printr ke dalam tag pra saat mengeluarkan ke browser.

print "<pre>";
print_r($dataset);
print "</pre>";

Akan memberikan hasil yang lebih mudah dibaca.

Christian Nagel
sumber
2

var_dump($var) menunjukkan detail mendalam, dengan memberikan detail tambahan

  • tipe data dari nilai (termasuk elemen turunan)
  • jumlah elemen dalam suatu variabel
  • panjang nilainya
ʞɔıɥʇɹɐʞ ouɐɯ
sumber
1

Dengan array besar, print_r dapat menampilkan informasi yang jauh lebih banyak daripada berguna. Anda dapat memotongnya seperti ini, menampilkan 2000 karakter pertama atau berapa banyak yang Anda butuhkan.

  echo "<pre>" . substr(print_r($dataset, 1), 0, 2000) . "</pre>";
Neil Bauers
sumber
1

var_dump (): -

  1. Fungsi ini menampilkan informasi terstruktur tentang satu atau lebih ekspresi yang mencakup jenis dan nilainya. Array dan objek dieksplorasi secara rekursif dengan nilai indentasi untuk menunjukkan struktur.
  2. Fungsi ini menampilkan jumlah elemen dalam suatu variabel.
  3. Fungsi ini menampilkan panjang variabel.
  4. Tidak dapat mengembalikan nilai hanya mencetak nilai.
  5. digunakan untuk tujuan debugging.

Contoh: -

<?php
$a = array(1, 2, array("a", "b", "c"));
var_dump($a);
?>

output: -

   array(3) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  array(3) {
    [0]=>
    string(1) "a"
    [1]=>
    string(1) "b"
    [2]=>
    string(1) "c"
  }
}

print_r (): -

  1. Mencetak informasi yang dapat dibaca manusia tentang suatu variabel.
  2. Tidak menampilkan jumlah elemen dalam variabel sebagai var_dump ().
  3. Tidak menampilkan panjang variabel dalam variabel sebagai var_dump ().
  4. Kembalikan nilai jika kita menetapkan parameter kedua menjadi true di printf_r ().

Contoh: -

<pre>
<?php
$a = array ('a' => 'apple', 'b' => 'banana', 'c' => array ('x', 'y', 'z'));
print_r ($a);
?>
</pre>

Keluaran:-

<pre>
Array
(
    [a] => apple
    [b] => banana
    [c] => Array
        (
            [0] => x
            [1] => y
            [2] => z
        )
)
</pre>
HeadAndTail
sumber
"Tidak dapat mengembalikan nilai, hanya mencetak nilai." Ya bisa. Agak. ob_start(); var_dump($var); $dump=ob_get_clean();
Sinus Mackowaty
0

print_r () dan var_dump () adalah fungsi debugging array yang digunakan dalam PHP untuk tujuan debugging. fungsi print_r () mengembalikan kunci array dan anggotanya sebagai Array ([key] = value) sedangkan fungsi var_dump () mengembalikan daftar array dengan kunci array dengan tipe data dan panjangnya juga mis. Array (array_length) {[0] = string (1) 'a'}.

Mahesh Chaudhary
sumber
0

Kami dapat mengirimkan beberapa parameter dengan var_dump seperti:

var_dump("array1",$array1,"array2",$array2);
Jasbir Rana
sumber