php var_dump () vs print_r ()

297

Jaka jest różnica między var_dump()i print_r()pod względem wypluwa tablicy jako ciąg?

w
źródło

Odpowiedzi:

355

Te var_dumpwyświetlacze funkcyjne strukturze informacji o zmiennych / wyrażenia w tym jego rodzaju i wartości . Tablice są badane rekurencyjnie z wartościami wciętymi, aby pokazać strukturę. Pokazuje także, które wartości tablic i właściwości obiektów są referencjami.

print_r()Wyświetla informacje o zmiennej w sposób, który jest odczytywany przez ludzi. wartości tablic będą prezentowane w formacie pokazującym klucze i elementy . Podobna notacja jest używana dla obiektów.

Przykład:

$obj = (object) array('qualitypoint', 'technologies', 'India');

var_dump($obj) wyświetli się poniżej wyjścia na ekranie.

object(stdClass)#1 (3) {
 [0]=> string(12) "qualitypoint"
 [1]=> string(12) "technologies"
 [2]=> string(5) "India"
}

I print_r($obj)wyświetli poniżej wynik na ekranie.

stdClass Object ( 
 [0] => qualitypoint
 [1] => technologies
 [2] => India
)

Więcej informacji

Sarfraz
źródło
76
print_r (null) nic nie zwróci, gdy var_dump (null) zwraca NULL, co jest przydatne podczas debugowania
rosh3000
7
Czy możesz rozszerzyć swoją odpowiedź o „var_export”?
joryl
1
Dwie zalety var_dump () polegają na tym, że zrzucone informacje są automatycznie zawarte w elemencie wstępnym. Korzystając z var_dump (), możesz zobaczyć, że każdy typ ma swój własny kolor. Poprawa czytelności.
Julian
3
@Julian tylko wtedy, gdy zainstalowany jest xdebug
Leif Neland,
57

Ogólnie, print_r( ) dane wyjściowe są ładniejsze, bardziej zwięzłe i łatwiejsze do odczytania, czyli bardziej czytelne dla człowieka, ale nie mogą pokazywać typów danych.

Z print_r() możesz również zapisać dane wyjściowe w zmiennej:

$output = print_r($array, true);

co var_dump()nie może zrobić. Jednak var_dump()może wyświetlać typy danych.

gilzero
źródło
9
var_dump () może być przechowywany w zmiennej, choć jest nieco bardziej
brzydki
7
możesz także użyć opcji „brat” var_export (), jeśli potrzebujesz oszczędzać
CSᵠ
21

var_dump() pokaże ci rodzaj rzeczy, a także jej zawartość.

Otrzymasz => (string)"var" Przykład jest tutaj.

print_r() po prostu wyświetli treść.

Czy wynik => "var" Przykład jest tutaj.

David Yell
źródło
12
Myślę, że lepszym przykładem byłoby, var_dump(0.0);które wyjścia float(0)vs print_r(0.0);które wyjścia 0(stąd prowadzi do możliwego pomylenia typu) ...
ircmaxell
13

Jeśli pytasz, kiedy powinieneś użyć, zazwyczaj używam print_r()do wyświetlania wartości i var_dump()problemów z typami zmiennych.

Danny Nimmo
źródło
8

var_dumpwyświetla uporządkowane informacje o obiekcie / zmiennej. Obejmuje to typ i wartości. Podobnie jak print_rtablice są powtarzane i wcięte.

print_rwyświetla czytelne dla człowieka informacje o wartościach w formacie prezentującym klucze i elementy tablic i obiektów.

Najważniejszą rzeczą, na którą należy zwrócić uwagę, jest var_dumptyp wyjściowy, a także wartości, podczas gdy print_rnie.

Josh K.
źródło
5

Znaczące różnice między var_dump iprint_r

obie funkcje zrzucają informacje o zmiennej , ale var_dumpwiele parametrów, które zostaną zrzucone, przy czym jak print_rmożna wziąć dwa parametry, z których pierwszy parametr to zmienna, którą chcesz zrzucić, a drugi to wartość logiczna.

var_dumpnie może zwrócić żadnej wartości, może jedynie zrzucić / wydrukować wartości, gdzie jako print_r może zwrócić informacje o zmiennej, jeśli ustawimy drugi parametr print_rna true . Zwrócona wartość print_rbędzie w formacie ciągu .

Informacje drukowane przez print_rsą znacznie bardziej w czytelnym formacie, w którym var_dumpdrukowane są surowe wartości.

print_rFunkcja może być używana w wielu kontekstach, gdzie var_dumpmoże być używana do celów debugowania, głównie dlatego, że nie może zwrócić wartości.

Akshay Khale
źródło
1
vardumppobiera jeden lub więcej argumentów i każdy zostanie zrzucony.
biskup
@bishop, tak, masz rację, może przyjąć więcej argumentów, ale nie zwraca żadnej wartości
Akshay Khale
więc napraw swoją odpowiedź?
Govind Rai,
Naprawiono @GovindRai
Akshay Khale
„var_dump nie może zwrócić żadnej wartości”? Tak, może. Trochę ob_start(); var_dump($var); $dump=ob_get_clean();
Sinus Mackowaty
3

Dodatkowo zalecałbym umieszczenie wyjścia var_dump () lub printr we wstępnym tagu podczas wysyłania do przeglądarki.

print "<pre>";
print_r($dataset);
print "</pre>";

Daje bardziej czytelny wynik.

Christian Nagel
źródło
2

var_dump($var) pokazuje szczegółowe informacje, podając dodatkowe szczegóły dotyczące

  • typ danych wartości (w tym elementy potomne)
  • liczba elementów w zmiennej
  • długość wartości
ʞɔıɥʇɹɐʞ ouɐɯ
źródło
1

W przypadku dużych tablic print_r może wyświetlać znacznie więcej informacji niż jest to przydatne. Możesz go przyciąć w ten sposób, wyświetlając pierwsze 2000 znaków lub dowolną liczbę, których potrzebujesz.

  echo "<pre>" . substr(print_r($dataset, 1), 0, 2000) . "</pre>";
Neil Bauers
źródło
1

var_dump (): -

  1. Ta funkcja wyświetla uporządkowane informacje o jednym lub większej liczbie wyrażeń, które obejmują jego typ i wartość. Tablice i obiekty są eksplorowane rekurencyjnie z wartościami wciętymi, aby pokazać strukturę.
  2. Ta funkcja wyświetla numer elementu w zmiennej.
  3. Ta funkcja wyświetla długość zmiennej.
  4. Nie można zwrócić wartości, wystarczy wydrukować wartość.
  5. służy do debugowania.

Przykład: -

<?php
$a = array(1, 2, array("a", "b", "c"));
var_dump($a);
?>

wynik :-

   array(3) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  array(3) {
    [0]=>
    string(1) "a"
    [1]=>
    string(1) "b"
    [2]=>
    string(1) "c"
  }
}

print_r (): -

  1. Wyświetla czytelne dla człowieka informacje o zmiennej.
  2. Nie wyświetla liczby elementów w zmiennej jako var_dump ().
  3. Nie wyświetla długości zmiennej w zmiennej jako var_dump ().
  4. Zwróć wartość, jeśli ustawimy drugi parametr na true w printf_r ().

Przykład: -

<pre>
<?php
$a = array ('a' => 'apple', 'b' => 'banana', 'c' => array ('x', 'y', 'z'));
print_r ($a);
?>
</pre>

Wynik:-

<pre>
Array
(
    [a] => apple
    [b] => banana
    [c] => Array
        (
            [0] => x
            [1] => y
            [2] => z
        )
)
</pre>
HeadAndTail
źródło
„Nie można zwrócić wartości, wystarczy wydrukować wartość.” Tak, może. Trochę ob_start(); var_dump($var); $dump=ob_get_clean();
Sinus Mackowaty
0

print_r () i var_dump () to funkcje debugowania tablicy używane w PHP do celów debugowania. Funkcja print_r () zwraca klucze macierzy i ich elementy jako Array ([klucz] = wartość), podczas gdy funkcja var_dump () zwraca listę macierzy wraz z kluczami macierzy o typie i długości danych, np. Array (array_length) {[0] = string (1) „a”}.

Mahesh Chaudhary
źródło
0

Możemy przekazać wiele parametrów za pomocą var_dump, takich jak:

var_dump("array1",$array1,"array2",$array2);
Jasbir Rana
źródło