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_rDomyślnie drukuje wynik, ale zamiast tego umożliwia zwracanie jako ciąg znaków przy użyciu opcjonalnego$returnparametru.
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_exportnie obsługuje cykli odwołań / tablic rekurencyjnych, podczas gdyvar_dumpiprint_rsprawdź je. var_exportDomyślnie drukuje wynik, ale zamiast tego umożliwia zwracanie jako ciąg znaków przy użyciu opcjonalnego$returnparametru.
Zauważ, że var_exportze względu na swoją naturę, umrze straszną rekurencyjną śmiercią na, no cóż, rekurencyjnych tablicach. print_ri 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). :)
pinkgothic
@ftrotter Zawsze myślałem, że komentarz dobrze wyjaśni tę ciekawość, ale proszę bardzo, dodałem krótką notatkę do odpowiedzi.
phihag
1
Należy dodać, że można sprawić, by print_r () i var_export () zwracały ciąg znaków zamiast go wyprowadzać, podczas gdy var_dump () nie może tego zrobić. Nie lubię też funkcji var_export (), ponieważ jest to mylące - jeśli spróbujesz wyeksportować jakąś niezdefiniowaną stałą SOMECONST, po prostu otrzymasz ciąg tekstowy „SOMECONST”. Więc nie powie NULL, 0, "", ale faktycznie przyjmie, że jest to ciąg (i przypuszczam, że wyrzuci też POWIADOMIENIE).
userfuser
1
var_export jest dobry do bezpiecznego reprezentowania ciągu znaków, jak ochrona przed cudzysłowami / ukośnikiem odwrotnym.
dkellner
1
Osobiście wolę var_dumpwyjś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_exportponad var_dumpdla tego przypadku użycia jest do przyjęcia dla mnie. Aby uzyskać kompletność, zanotuj tę powiązaną prośbę o funkcję .
Paul van Leeuwen,
3
var_dumpi var_exportodnosić 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_rtego, że var_dumpeksportują więcej informacji, takich jak typ danych i rozmiar elementów.
Odpowiedzi:
var_dump służy do debugowania.
var_dump
zawsze wypisuje wynik.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.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ż, że
var_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.Osobiście uważam, że
var_export
to najlepszy kompromis zwięzły i precyzyjny.źródło
var_export
ze względu na swoją naturę, umrze straszną rekurencyjną śmiercią na, no cóż, rekurencyjnych tablicach.print_r
ivar_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 tegovar_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 wyboruvar_export
ponadvar_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
ivar_export
odnosić się w ten sposób (z instrukcji )Różnią się one od
print_r
tego, żevar_dump
eksportują więcej informacji, takich jak typ danych i rozmiar elementów.źródło