PHP Uscita di una vista strutturata di matrici e oggetti

Esempio

print_r() - Emissione di array e oggetti per il debug

print_r emetterà un formato leggibile da un oggetto o un array.

Potresti avere una variabile che è una matrice o un oggetto. Cercando di emetterlo con un echo verrà generato l'errore:
Notice: Array to string conversion . Puoi invece usare la funzione print_r per scaricare un formato leggibile da umani di questa variabile.

È possibile passare true come secondo parametro per restituire il contenuto come stringa.

$myobject = new stdClass();
$myobject->myvalue = 'Hello World';
$myarray = [ "Hello", "World" ];
$mystring = "Hello World";
$myint = 42;

// Using print_r we can view the data the array holds.
print_r($myobject);
print_r($myarray);
print_r($mystring);
print_r($myint);

Questo produce quanto segue:

stdClass Object
(
    [myvalue] => Hello World
)
Array
(
    [0] => Hello
    [1] => World
)
Hello World
42

Inoltre, l'output di print_r può essere catturato come una stringa, piuttosto che semplicemente echeggiato. Ad esempio, il seguente codice eseguirà il dump della versione formattata di $myarray in una nuova variabile:

$formatted_array = print_r($myarray, true);

Nota che se stai visualizzando l'output di PHP in un browser, ed è interpretato come HTML, le interruzioni di riga non verranno mostrate e l'output sarà molto meno leggibile a meno che tu non faccia qualcosa di simile

echo '<pre>' . print_r($myarray, true) . '</pre>';

L'apertura del codice sorgente di una pagina formatterà anche la tua variabile allo stesso modo senza l'uso del tag <pre> .

In alternativa puoi dire al browser che ciò che stai trasmettendo è testo normale e non HTML:

header('Content-Type: text/plain; charset=utf-8');
print_r($myarray);

var_dump() - var_dump() informazioni di debug leggibili dal punto di vista del contenuto degli argomenti, inclusi il tipo e il valore

L'output è più dettagliato rispetto a print_r perché emette anche il tipo della variabile insieme al suo valore e altre informazioni come gli ID oggetto, le dimensioni dell'array, le lunghezze delle stringhe, gli indicatori di riferimento, ecc.

È possibile utilizzare var_dump per generare una versione più dettagliata per il debug.

var_dump($myobject, $myarray, $mystring, $myint);

L'output è più dettagliato:

object(stdClass)#12 (1) {
  ["myvalue"]=>
  string(11) "Hello World"
}
array(2) {
  [0]=>
  string(5) "Hello"
  [1]=>
  string(5) "World"
}
string(11) "Hello World"
int(42)

Nota : se si utilizza xDebug nell'ambiente di sviluppo, l'output di var_dump è limitato / troncato per impostazione predefinita. Vedi la documentazione ufficiale per maggiori informazioni sulle opzioni per cambiarlo.


var_export() - var_export() codice PHP valido

var_export() scarica una rappresentazione var_export() PHP dell'elemento.

È possibile passare true come secondo parametro per restituire il contenuto in una variabile.

var_export($myarray);
var_export($mystring);
var_export($myint);

L'output è un codice PHP valido:

array (
  0 => 'Hello',
  1 => 'World',
)
'Hello World'
42

Per inserire il contenuto in una variabile, puoi farlo:

$array_export = var_export($myarray, true);
$string_export = var_export($mystring, true);
$int_export = var_export($myint, 1); // any `Truthy` value

Dopo di ciò, puoi farlo in questo modo:

printf('$myarray = %s; %s', $array_export, PHP_EOL);
printf('$mystring = %s; %s', $string_export, PHP_EOL);
printf('$myint = %s; %s', $int_export, PHP_EOL);

Questo produrrà il seguente risultato:

$myarray = array (
  0 => 'Hello',
  1 => 'World',
);
$mystring = 'Hello World';
$myint = 42;