Menu

PHP var_dump() vs print_r(): stampare array e fare debug

print_r($array) stampa un array in forma leggibile, var_dump($value) mostra anche ogni tipo e lunghezza, e var_export stampa codice PHP valido. Scopri quando usare ciascuno, come ottenere print_r come stringa e come stampare in modo leggibile nell'HTML con <pre>.

Questa pagina include editor eseguibili: modifica, esegui e vedi subito l'output.

print_r($array) stampa un array o un oggetto con le sue chiavi e i suoi valori in forma leggibile. var_dump($value) stampa la stessa struttura più il tipo e la lunghezza di ogni valore. Usa print_r per vedere cosa c'è in un array, e var_dump quando devi sapere se un valore è "1" o 1.

Confronta i due output per admin: print_r non ha stampato nulla dopo la freccia, var_dump ha stampato bool(false). Questa differenza è il motivo principale per usare var_dump durante il debug.

print_r vs var_dump vs var_export

Le tre funzioni mostrano gli stessi dati con un dettaglio diverso:

print_rvar_dumpvar_export
Mostra i tipinosìcome letterali PHP
false, null, ""non stampano nullabool(false), NULL, string(0) ""false, NULL, ''
Può restituire una stringaprint_r($x, true)novar_export($x, true)
L'output è PHP validononosì
Più valori in una chiamatanovar_dump($a, $b)no

print_r è il più facile da leggere, var_dump il più preciso, e var_export ti dà codice da reincollare in un file.

Ottenere l'output di print_r come stringa

Passa true come secondo argomento e print_r restituisce il testo invece di stamparlo. È così che scrivi un array in un file di log o lo inserisci in un messaggio più lungo.

var_export($value, true) restituisce una stringa allo stesso modo. var_dump stampa sempre, quindi per catturarlo ti serve l'output buffering: ob_start(); var_dump($x); $text = ob_get_clean();.

Stampare un array leggibile nell'HTML con pre

In un browser, gli a capo e gli spazi di print_r si riducono a un'unica lunga riga, perché l'HTML ignora gli spazi bianchi. Racchiudi l'output in <pre> per mantenere l'impaginazione. Eseguilo e guarda la scheda Page.

htmlspecialchars conta appena i dati possono contenere < o &, per esempio l'input dell'utente: senza, il browser tratterebbe quel testo come HTML. Per i dati che invii a JavaScript o a un'API, la forma con json_encode è spesso la più utile.

Stampare più valori insieme

var_dump accetta un numero qualsiasi di argomenti e li stampa uno dopo l'altro, il che è comodo per confrontare due valori fianco a fianco.

L'output mostra perché == dice che sono uguali e === no: uno è string(2) "42", l'altro int(42).

Stampare oggetti

Tutte e tre le funzioni stampano anche gli oggetti. var_dump e print_r indicano le proprietà private e protected ([label:Point:private]), il che aiuta quando una proprietà sembra mancare.

Il #1 nell'output di var_dump è l'id dell'oggetto. Due variabili che mostrano lo stesso id puntano allo stesso oggetto.

Errore comune: echo su un array

echo trasforma il suo argomento in una stringa. Un array non ha una forma stringa, quindi PHP stampa la parola Array e genera un warning:

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

PHP stampa:

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

Stampa il contenuto con una delle funzioni qui sopra, oppure unisci tu i valori:

implode serve per mostrare una lista a un utente, json_encode per log e API, e print_r o var_dump per il tuo debug.

Domande frequenti

Qual è la differenza tra var_dump e print_r?

print_r mostra chiavi e valori in una forma breve e leggibile. var_dump mostra anche il tipo e la lunghezza di ogni valore, come string(3) "Ada" e bool(false), quindi è quello da usare quando il tipo conta. print_r(false) non stampa nulla, mentre var_dump(false) stampa bool(false).

Come ottengo l'output di print_r come stringa?

Passa true come secondo argomento: $text = print_r($array, true); restituisce il testo invece di stamparlo, così puoi scriverlo in un log con error_log($text) o metterlo in una variabile. var_export($value, true) funziona allo stesso modo; var_dump non ha questa opzione.

Come stampo un array in modo leggibile nel browser?

Racchiudi l'output in un tag <pre> così il browser mantiene a capo e indentazione: echo '<pre>' . print_r($array, true) . '</pre>';. Applica htmlspecialchars se i dati possono contenere HTML.

Perché echo su un array stampa Array?

echo converte il suo argomento in stringa, e un array si converte nella parola Array con il warning "Array to string conversion". Usa print_r, var_dump, implode(', ', $arr) o json_encode($arr) per stamparne il contenuto.

Cosa fa var_export in PHP?

Stampa un valore come codice PHP valido, per esempio array ( 0 => 'a', ), che puoi reincollare in uno script. Con true come secondo argomento restituisce il codice come stringa, ed è così che alcuni strumenti scrivono file di configurazione in cache.

Illustrazione dei linguaggi di programmazione di Coddy

Impara a programmare con Coddy

INIZIA