Menu

PHP var_dump() ve print_r(): Dizi Yazdırma ve Hata Ayıklama

print_r($array) bir diziyi okunur biçimde yazdırır, var_dump($value) her türü ve uzunluğu da gösterir, var_export ise geçerli PHP kodu yazdırır. Hangisini ne zaman kullanacağınızı, print_r çıktısını bir dizge olarak almayı ve <pre> ile HTML'de okunur yazdırmayı öğrenin.

Bu sayfada çalıştırılabilir editörler var - düzenle, çalıştır ve sonucu anında gör.

print_r($array) bir diziyi veya nesneyi anahtarları ve değerleriyle okunur bir biçimde yazdırır. var_dump($value) aynı yapıyı her değerin türü ve uzunluğuyla birlikte yazdırır. Bir dizide ne olduğunu görmek için print_r, bir değerin "1" mi yoksa 1 mi olduğunu bilmeniz gerektiğinde var_dump kullanın.

admin için iki çıktıyı karşılaştırın: print_r oktan sonra hiçbir şey yazdırmadı, var_dump ise bool(false) yazdırdı. Hata ayıklarken var_dump fonksiyonuna başvurmanın temel nedeni bu farktır.

print_r, var_dump ve var_export karşılaştırması

Üç fonksiyon aynı veriyi farklı ayrıntıyla gösterir:

print_rvar_dumpvar_export
Türleri gösterirhayırevetPHP değişmezleri olarak
false, null, ""hiçbir şey yazdırmazbool(false), NULL, string(0) ""false, NULL, ''
Dizge döndürebilirprint_r($x, true)hayırvar_export($x, true)
Çıktı geçerli PHPhayırhayırevet
Tek çağrıda birkaç değerhayırvar_dump($a, $b)hayır

print_r okunması en kolay olanıdır, var_dump en kesin olanıdır, var_export ise bir dosyaya geri yapıştırabileceğiniz kod verir.

print_r çıktısını bir dizge olarak alma

İkinci argüman olarak true verin, print_r metni yazdırmak yerine döndürür. Bir diziyi bir log dosyasına yazmanın ya da daha büyük bir mesajın içine koymanın yolu budur.

var_export($value, true) da aynı şekilde bir dizge döndürür. var_dump her zaman yazdırır, bu yüzden onu yakalamak için çıktı arabelleği gerekir: ob_start(); var_dump($x); $text = ob_get_clean();.

pre ile bir diziyi HTML'de düzgün yazdırma

Bir tarayıcıda print_r çıktısındaki satır sonları ve boşluklar tek uzun bir satıra çöker, çünkü HTML boşlukları yok sayar. Düzeni korumak için çıktıyı <pre> ile sarın. Bunu çalıştırın ve Page sekmesine bakın.

Veri < veya & içerebildiği anda, örneğin kullanıcı girdisinde, htmlspecialchars önemli hale gelir: o olmadan tarayıcı o metni HTML olarak ele alırdı. JavaScript'e veya bir API'ye gönderdiğiniz veriler için json_encode biçimi çoğu zaman en kullanışlısıdır.

Aynı anda birkaç değeri dökme

var_dump istenen sayıda argüman kabul eder ve her birini sırayla yazdırır; iki değeri yan yana karşılaştırmak için hızlıdır.

Çıktı == neden eşit dediğini, === ise neden demediğini gösterir: biri string(2) "42", diğeri int(42) değeridir.

Nesneleri yazdırma

Üç fonksiyon da nesneleri yazdırır. var_dump ve print_r private ve protected özellikleri işaretler ([label:Point:private]); bu, bir özellik eksik göründüğünde yardımcı olur.

var_dump çıktısındaki #1 nesnenin kimliğidir. Aynı kimliği gösteren iki değişken aynı nesneyi gösterir.

Sık yapılan hata: bir dizi üzerinde echo

echo argümanını bir dizgeye çevirir. Bir dizinin dizge biçimi yoktur, bu yüzden PHP Array kelimesini yazdırır ve bir uyarı verir:

<?php
$colors = ["red", "green", "blue"];
echo $colors;

PHP şunu yazdırır:

Warning: Array to string conversion in /home/index.php on line 3
Array

İçeriği yukarıdaki fonksiyonlardan biriyle yazdırın ya da değerleri kendiniz birleştirin:

implode bir listeyi bir kullanıcıya göstermek, json_encode loglar ve API'ler, print_r veya var_dump ise kendi hata ayıklamanız içindir.

Sıkça Sorulan Sorular

var_dump ile print_r arasındaki fark nedir?

print_r anahtarları ve değerleri kısa, okunur bir biçimde gösterir. var_dump ayrıca her değerin türünü ve uzunluğunu da gösterir, örneğin string(3) "Ada" ve bool(false); bu yüzden tür önemli olduğunda kullanılacak odur. print_r(false) hiçbir şey yazdırmaz, var_dump(false) ise bool(false) yazdırır.

print_r çıktısını bir dizge olarak nasıl alırım?

İkinci argüman olarak true verin: $text = print_r($array, true); metni yazdırmak yerine döndürür, böylece onu error_log($text) ile bir loga yazabilir ya da bir değişkene koyabilirsiniz. var_export($value, true) da aynı şekilde çalışır; var_dump fonksiyonunun böyle bir seçeneği yoktur.

Bir diziyi tarayıcıda düzgün bir şekilde nasıl yazdırırım?

Tarayıcının satır sonlarını ve girintiyi koruması için çıktıyı bir <pre> etiketiyle sarın: echo '<pre>' . print_r($array, true) . '</pre>';. Veri HTML içerebiliyorsa onu htmlspecialchars ile kaçışlayın.

Bir dizi üzerinde echo neden Array yazdırıyor?

echo argümanını bir dizgeye çevirir ve bir dizi "Array to string conversion" uyarısıyla Array kelimesine dönüşür. İçeriği yazdırmak için print_r, var_dump, implode(', ', $arr) veya json_encode($arr) kullanın.

PHP'de var_export ne işe yarar?

Bir değeri, bir betiğe geri yapıştırabileceğiniz geçerli PHP kodu olarak yazdırır, örneğin array ( 0 => 'a', ). İkinci argüman olarak true ile kodu bir dizge olarak döndürür; bazı araçlar önbelleğe alınmış yapılandırma dosyalarını bu şekilde yazar.

Coddy programlama dilleri çizimi

Coddy ile kodlamayı öğren

BAŞLA