Jaka jest różnica między var_dump
, var_export
i print_r
?
Jaka jest różnica między var_dump
, var_export
i print_r
?
Odpowiedzi:
var_dump służy do debugowania. var_dump
zawsze wypisuje wynik.
// var_dump(array('', false, 42, array('42')));
array(4) {
[0]=> string(0) ""
[1]=> bool(false)
[2]=> int(42)
[3]=> array(1) {[0]=>string(2) "42")}
}
print_r służy również do debugowania, ale nie zawiera typu elementu członkowskiego. Jest to dobry pomysł, jeśli znasz typy elementów w tablicy, ale w przeciwnym razie może być mylący. print_r
Domyślnie drukuje wynik, ale zamiast tego umożliwia zwracanie jako ciąg znaków przy użyciu opcjonalnego$return
parametru.
Array (
[0] =>
[1] =>
[2] => 42
[3] => Array ([0] => 42)
)
var_export drukuje prawidłowy kod php. Przydatne, jeśli obliczyłeś jakieś wartości i chcesz, aby wyniki były stałą w innym skrypcie. Zauważ, żevar_export
nie obsługuje cykli odwołań / tablic rekurencyjnych, podczas gdyvar_dump
iprint_r
sprawdź je. var_export
Domyślnie drukuje wynik, ale zamiast tego umożliwia zwracanie jako ciąg znaków przy użyciu opcjonalnego$return
parametru.
array (
0 => '',
1 => false,
2 => 42,
3 => array (0 => '42',),
)
Osobiście uważam, że var_export
to najlepszy kompromis zwięzły i precyzyjny.
var_export
ze względu na swoją naturę, umrze straszną rekurencyjną śmiercią na, no cóż, rekurencyjnych tablicach. print_r
i var_dump
(choć nie jestem do końca pewien co do drugiego, ponieważ zwykle go nie używam) nie mam tego problemu. Więc nie rób tego var_export($_GLOBALS);
na przykład (który zawiera siebie). :)
var_dump
wyjście. Szkoda, że nie pozwala na zwracanie danych wyjściowych w postaci łańcucha. Jako taki mogę odnieść się do sentymentu @ iconoclast w powyższym komentarzu. Ale mając do wyboru var_export
ponad var_dump
dla tego przypadku użycia jest do przyjęcia dla mnie. Aby uzyskać kompletność, zanotuj tę powiązaną prośbę o funkcję .
var_dump
i var_export
odnosić się w ten sposób (z instrukcji )
var_export () pobiera ustrukturyzowane informacje o danej zmiennej. Jest podobny do var_dump () z jednym wyjątkiem: zwrócona reprezentacja jest poprawnym kodem PHP.
Różnią się one od print_r
tego, że var_dump
eksportują więcej informacji, takich jak typ danych i rozmiar elementów.