print_r nie jest dokładnie aliasem var_dump - wyświetla dane w innym formacie. W szczególności dane wyjściowe z var_dump zawierają również „typ” każdej zmiennej.
Kolejnym szczegółem do dodania, który może być przydatny, jest to, że var_dump obcina bardzo długie teksty, pokazując ... i wskazując pozostałą długość, na przykład: nawet '... (długość = 4482) Jeśli użyjesz echa, tak się nie stanie.
Yordan
Odpowiedzi:
186
printi echosą mniej więcej takie same; oba są konstrukcjami językowymi wyświetlającymi ciągi znaków. Różnice są subtelne: printma wartość zwracaną 1, więc można jej używać w wyrażeniach, podczas gdy echoma voidtyp zwracany; echomoże przyjmować wiele parametrów, chociaż takie użycie jest rzadkie; echojest nieco szybszy niżprint . (Osobiście zawsze używam echo, nigdy print.)
var_dumpwypisuje szczegółowy zrzut zmiennej, w tym jej typ i typ dowolnych podelementów (jeśli jest to tablica lub obiekt). print_rwypisuje zmienną w bardziej czytelnej dla człowieka formie: ciągi nie są cytowane, informacje o typie są pomijane, rozmiary tablic nie są podawane itp.
var_dumpprint_rz mojego doświadczenia jest zwykle bardziej przydatna niż podczas debugowania. Jest to szczególnie przydatne, gdy nie wiesz dokładnie, jakie wartości / typy masz w zmiennych. Rozważ ten program testowy:
Zwraca jeden lub więcej ciągów oddzielonych przecinkami
Brak wartości zwracanej
na przykład echo "String 1", "String 2"
wydrukować
Wyprowadza tylko jeden ciąg
Zwraca 1, więc można go użyć w wyrażeniu
na przykład print "Hello"
lub, if ($expr && print "foo")
print_r ()
Wyjścia reprezentacji czytelnej dla człowieka każdej jednej wartości
Akceptuje nie tylko łańcuchy, ale także inne typy, w tym tablice i obiekty, formatując je tak, aby były czytelne
Przydatne podczas debugowania
Może zwrócić wynik jako wartość zwracaną (zamiast echa), jeśli podany zostanie drugi opcjonalny argument
var_dump ()
Generuje czytelną dla człowieka reprezentację jednej lub więcej wartości oddzielonych przecinkami
Akceptuje nie tylko łańcuchy, ale także inne typy, w tym tablice i obiekty, formatując je tak, aby były czytelne
Używa innego formatu wyjściowego print_r(), na przykład drukuje również typ wartości
Przydatne podczas debugowania
Brak wartości zwracanej
var_export ()
Wyjścia w czytelnej dla człowieka i PHP-wykonywalnego reprezentacji każdej jednej wartości
Akceptuje nie tylko łańcuchy, ale także inne typy, w tym tablice i obiekty, formatując je tak, aby były czytelne
Używa innego formatu wyjściowego zarówno print_r()ivar_dump() - wynikowy wynik jest prawidłowym kodem PHP!
Przydatne podczas debugowania
Może zwrócić wynik jako wartość zwracaną (zamiast echa), jeśli podany zostanie drugi opcjonalny argument
Uwagi:
Mimo że printmożna go użyć w wyrażeniu, zalecam, aby ludzie tego unikali, ponieważ ma to negatywny wpływ na czytelność kodu (i ponieważ jest mało prawdopodobne, aby kiedykolwiek był użyteczny). Zasada pierwszeństwa podczas interakcji z innymi operatorami może być również myląca. Z tego powodu osobiście nigdy nie mam powodu, aby z niego korzystać echo.
Natomiast echoi printsą konstrukcje językowe, print_r()i var_dump()/ var_export()regularne funkcje. Nie potrzebujesz nawiasów, aby dołączyć argumenty do echolubprint (a jeśli ich użyjesz, będą traktowane jak w wyrażeniu).
Chociaż var_export()zwraca prawidłowy kod PHP, umożliwiając późniejsze odczytanie wartości, poleganie na nim w kodzie produkcyjnym może ułatwić wprowadzenie luk w zabezpieczeniach z powodu potrzeby użycia eval(). Lepiej byłoby użyć formatu takiego jak JSON zamiast do przechowywania i odczytywania wartości. Prędkość będzie porównywalna.
Krótka uwaga na temat tego, kiedy chcesz mieć echo $a, $b;składnię, kiedy możesz to zrobić echo $a . $b;: jeśli $ a lub $ b są naprawdę dużymi łańcuchami, wówczas ta ostatnia zużyje dodatkową pamięć i czas, tworząc oddzielną połączoną wersję łańcuchów w pamięci przed nią może rozpocząć wyświetlanie w przeglądarce.
thomasrutter
Oczywiście możesz też po prostu użyć echo $a; echo $b;.
thomasrutter
16
Aby dodać do odpowiedzi Johna , echopowinna być jedyną, której używasz do drukowania treści na stronie.
printjest nieco wolniejszy. var_dump()i print_r()powinien być używany tylko do debugowania.
Warto również wspomnieć, że print_r()i var_dump()domyślnie odbije się echem, dodaj drugi argument do print_r()co najmniej wartości true, aby zamiast tego powrócił, np print_r($array, TRUE).
Różnica między echem a zwracaniem to:
echo: natychmiast wydrukuje wartość na wyjściu.
returning: Zwraca wynik funkcji jako ciąg znaków. Przydatny do logowania itp.
Tylko dlatego, że podniosłeś problem, jaka jest różnica między echoingiem a returningiem?
David mówi, że przywróć Monikę
2
wow, chciałbym wiedzieć o zwracanym parametrze :( w zasadzie możesz zrobić $ foo = print_r ($ tablica, prawda); i użyć go na inne sposoby (do dziennika, tabeli itp.)
FryGuy
print_rPodczas kodowania PHP dość często korzystałem ze zwracanego parametru. Jednak miałem tendencję do pisania print_r( $foo, 1 );. Szybsze jest pisanie;) I o tym nie dbam zbytnio o czytelność, ponieważ nazwa print_rnie jest zbyt opisowa.
ekshuma
var_dump()nie obsługuje drugiego argumentu, pozwalając mu zwrócić wartość taką jak print_r()robi, ponieważ var_dump()może zaakceptować wiele argumentów do wyjścia.
thomasrutter
@ thomasrutter Prawda, nie jestem pewien, dlaczego to napisałem.
Różnica między echo , print , print_r i var_dump jest bardzo prosta.
Echo
echo nie jest w rzeczywistości funkcją, ale konstrukcją języka używaną do wydruku. Jest nieznacznie szybszy niż wydruk.
echo "Hello World";// this will print Hello World
echo "Hello ","World";// Multiple arguments - this will print Hello World
$var_1=55;
echo "$var_1";// this will print 55
echo "var_1=".$var_1;// this will print var_1=55
echo 45+$var_1;// this will print 100
$var_2="PHP";
echo "$var_2";// this will print PHP
$var_3=array(99,98,97)// Arrays are not possible with echo (loop or index value required)
$var_4=array("P"=>"3","J"=>"4");// Arrays are not possible with echo (loop or index value required)
Możesz także użyć instrukcji echo z nawiasami lub bez
echo ("Hello World");// this will print Hello World
wydrukować
Podobnie jak druk konstrukcji echa jest również konstrukcją języka, a nie rzeczywistą funkcją. Różnice między echem a drukowaniem polegają na tym, że print przyjmuje tylko jeden argument, a print zawsze zwraca 1. Natomiast echo nie ma wartości zwracanej. Tak więc instrukcja print może być używana w wyrażeniach.
print"Hello World";// this will print Hello Worldprint"Hello ","World";// Multiple arguments - NOT POSSIBLE with print
$var_1=55;print"$var_1";// this will print 55print"var_1=".$var_1;// this will print var_1=55print45+$var_1;// this will print 100
$var_2="PHP";print"$var_2";// this will print PHP
$var_3=array(99,98,97)// Arrays are not possible with print (loop or index value required)
$var_4=array("P"=>"3","J"=>"4");// Arrays are not possible with print (loop or index value required)
Podobnie jak echo , druk może być używany z nawiasami lub bez nich.
print("Hello World");// this will print Hello World
print_r
Funkcja print_r () służy do drukowania czytelnych dla człowieka informacji o zmiennej. Jeśli argumentem jest tablica, funkcja print_r () drukuje klucze i elementy (to samo dla obiektów).
print_r ("Hello World");// this will print Hello World
$var_1=55;
print_r ("$var_1");// this will print 55
print_r ("var_1=".$var_1);// this will print var_1=55
print_r (45+$var_1);// this will print 100
$var_2="PHP";
print_r ("$var_2");// this will print PHP
$var_3=array(99,98,97)// this will print Array ( [0] => 1 [1] => 2 [2] => 3 )
$var_4=array("P"=>"3","J"=>"4");// this will print Array ( [P] => 3 [J] => 4 )
var_dump
Funkcja var_dump zwykle używana do debugowania i wyświetla informacje (typ i wartość) o zmiennej / tablicy / obiekcie.
var_dump($var_1);// this will print int(5444)
var_dump($var_2);// this will print string(5) "Hello"
var_dump($var_3);// this will print array(3) { [0]=> int(1) [1]=> int(2) [2]=> int(3) }
var_dump($var_4);// this will print array(2) { ["P"]=> string(1) "3" ["J"]=> string(1) "4" }
Z tą odpowiedzią jest tyle problemów. printto nie prawdziwa funkcja jest konstruktem język jak echo. Może być również użyty jako instrukcja. echoto nie oświadczenie nie może być używany w jednym. printnie nie wymaga nawiasów, ani nie ani echa lub wydrukować używać nawiasów jak funkcja będzie. Pominąłeś także jedną z głównych różnic - echo akceptuje wiele ciągów znaków do echa oddzielonych przecinkami.
thomasrutter
2
... i przesłałeś tę odpowiedź, gdy kilka odpowiedzi już istniało i zawierało prawidłowe informacje.
thomasrutter
2
** Echocan akceptuje wiele wyrażeń, podczas gdy drukowanie nie. Funkcja PHP Print_r () służy do zwracania tablicy w postaci czytelnej dla człowieka. Jest po prostu napisane jako
echo: echo jest konstrukcją językową, w której nie jest wymagane używanie w nim nawiasów i może przyjmować dowolną liczbę parametrów i zwracać nieważność.
print: jest to konstrukcja językowa, w której nie trzeba używać nawiasów, wystarczy pobrać jeden parametr i zwrócić
1 always.intprint(param1);print"test1";print"test1","test2";// It will give syntax error
prinf: Jest to funkcja, która pobiera co najmniej jeden ciąg znaków i styl formatu oraz zwraca długość ciągu wyjściowego.
int printf($string,$s);
$s="Shailesh";
$i= printf("Hello %s how are you?",$s);
echo $i;Output:HelloShailesh how are you?27
echo returns void so its execution is faster than printand printf
print_r () może wydrukować wartość, ale także jeśli drugi parametr flagi zostanie przekazany i ma wartość PRAWDA - zwróci wydrukowany wynik jako ciąg i nic nie zostanie wysłane na standardowe wyjście. O var_dump. Jeśli zainstalowany jest debuger XDebug, wyniki wyjściowe zostaną sformatowane w znacznie bardziej czytelny i zrozumiały sposób.
Odpowiedzi:
print
iecho
są mniej więcej takie same; oba są konstrukcjami językowymi wyświetlającymi ciągi znaków. Różnice są subtelne:print
ma wartość zwracaną 1, więc można jej używać w wyrażeniach, podczas gdyecho
mavoid
typ zwracany;echo
może przyjmować wiele parametrów, chociaż takie użycie jest rzadkie;echo
jest nieco szybszy niżprint
. (Osobiście zawsze używamecho
, nigdyprint
.)var_dump
wypisuje szczegółowy zrzut zmiennej, w tym jej typ i typ dowolnych podelementów (jeśli jest to tablica lub obiekt).print_r
wypisuje zmienną w bardziej czytelnej dla człowieka formie: ciągi nie są cytowane, informacje o typie są pomijane, rozmiary tablic nie są podawane itp.var_dump
print_r
z mojego doświadczenia jest zwykle bardziej przydatna niż podczas debugowania. Jest to szczególnie przydatne, gdy nie wiesz dokładnie, jakie wartości / typy masz w zmiennych. Rozważ ten program testowy:Ze
print_r
nie można odróżnić0
i0.0
lubfalse
i''
:źródło
Echo
Brak wartości zwracanej
na przykład
echo "String 1", "String 2"
wydrukować
Zwraca
1
, więc można go użyć w wyrażeniuna przykład
print "Hello"
lub,
if ($expr && print "foo")
print_r ()
var_dump ()
print_r()
, na przykład drukuje również typ wartościvar_export ()
print_r()
ivar_dump()
- wynikowy wynik jest prawidłowym kodem PHP!Uwagi:
print
można go użyć w wyrażeniu, zalecam, aby ludzie tego unikali, ponieważ ma to negatywny wpływ na czytelność kodu (i ponieważ jest mało prawdopodobne, aby kiedykolwiek był użyteczny). Zasada pierwszeństwa podczas interakcji z innymi operatorami może być również myląca. Z tego powodu osobiście nigdy nie mam powodu, aby z niego korzystaćecho
.echo
iprint
są konstrukcje językowe,print_r()
ivar_dump()
/var_export()
regularne funkcje. Nie potrzebujesz nawiasów, aby dołączyć argumenty doecho
lubprint
(a jeśli ich użyjesz, będą traktowane jak w wyrażeniu).var_export()
zwraca prawidłowy kod PHP, umożliwiając późniejsze odczytanie wartości, poleganie na nim w kodzie produkcyjnym może ułatwić wprowadzenie luk w zabezpieczeniach z powodu potrzeby użyciaeval()
. Lepiej byłoby użyć formatu takiego jak JSON zamiast do przechowywania i odczytywania wartości. Prędkość będzie porównywalna.źródło
echo $a, $b;
składnię, kiedy możesz to zrobićecho $a . $b;
: jeśli $ a lub $ b są naprawdę dużymi łańcuchami, wówczas ta ostatnia zużyje dodatkową pamięć i czas, tworząc oddzielną połączoną wersję łańcuchów w pamięci przed nią może rozpocząć wyświetlanie w przeglądarce.echo $a; echo $b;
.Aby dodać do odpowiedzi Johna ,
echo
powinna być jedyną, której używasz do drukowania treści na stronie.print
jest nieco wolniejszy.var_dump()
iprint_r()
powinien być używany tylko do debugowania.Warto również wspomnieć, że
print_r()
ivar_dump()
domyślnie odbije się echem, dodaj drugi argument doprint_r()
co najmniej wartości true, aby zamiast tego powrócił, npprint_r($array, TRUE)
.Różnica między echem a zwracaniem to:
źródło
echo
ingiem areturn
ingiem?print_r
Podczas kodowania PHP dość często korzystałem ze zwracanego parametru. Jednak miałem tendencję do pisaniaprint_r( $foo, 1 );
. Szybsze jest pisanie;) I o tym nie dbam zbytnio o czytelność, ponieważ nazwaprint_r
nie jest zbyt opisowa.var_dump()
nie obsługuje drugiego argumentu, pozwalając mu zwrócić wartość taką jakprint_r()
robi, ponieważvar_dump()
może zaakceptować wiele argumentów do wyjścia.Brak typu zwrotu
Podaj typ zwrotu
Wyjścia w formacie sformatowanym,
źródło
Różnica między echo , print , print_r i var_dump jest bardzo prosta.
echo nie jest w rzeczywistości funkcją, ale konstrukcją języka używaną do wydruku. Jest nieznacznie szybszy niż wydruk.
Możesz także użyć instrukcji echo z nawiasami lub bez
Podobnie jak druk konstrukcji echa jest również konstrukcją języka, a nie rzeczywistą funkcją. Różnice między echem a drukowaniem polegają na tym, że print przyjmuje tylko jeden argument, a print zawsze zwraca 1. Natomiast echo nie ma wartości zwracanej. Tak więc instrukcja print może być używana w wyrażeniach.
Podobnie jak echo , druk może być używany z nawiasami lub bez nich.
Funkcja print_r () służy do drukowania czytelnych dla człowieka informacji o zmiennej. Jeśli argumentem jest tablica, funkcja print_r () drukuje klucze i elementy (to samo dla obiektów).
Funkcja var_dump zwykle używana do debugowania i wyświetla informacje (typ i wartość) o zmiennej / tablicy / obiekcie.
źródło
Echo :
Jest to instrukcja, a nie funkcja Brak wartości zwracanej
Nie wymagane nawiasy
Nie drukuj macierzy
Wydrukować
To prawdziwa funkcja
Typ zwrotu 1
Wymagane nawiasy
Nie drukuj macierzy
Drukuj_r
Drukuj w formacie czytelnym dla człowieka
Ciąg nie jest w cudzysłowie
Brak szczegółowych informacji o typie zmiennej i wszystkich
var_dump
Wszystkie informacje o zrzutu zmiennej, takie jak typ elementu i podelementu
źródło
print
to nie prawdziwa funkcja jest konstruktem język jak echo. Może być również użyty jako instrukcja.echo
to nie oświadczenie nie może być używany w jednym.print
nie nie wymaga nawiasów, ani nie ani echa lub wydrukować używać nawiasów jak funkcja będzie. Pominąłeś także jedną z głównych różnic - echo akceptuje wiele ciągów znaków do echa oddzielonych przecinkami.** Echocan akceptuje wiele wyrażeń, podczas gdy drukowanie nie. Funkcja PHP Print_r () służy do zwracania tablicy w postaci czytelnej dla człowieka. Jest po prostu napisane jako
źródło
echo: echo jest konstrukcją językową, w której nie jest wymagane używanie w nim nawiasów i może przyjmować dowolną liczbę parametrów i zwracać nieważność.
print: jest to konstrukcja językowa, w której nie trzeba używać nawiasów, wystarczy pobrać jeden parametr i zwrócić
prinf: Jest to funkcja, która pobiera co najmniej jeden ciąg znaków i styl formatu oraz zwraca długość ciągu wyjściowego.
źródło
print_r()
służy do drukowania tablicy w formacie czytelnym dla człowieka.źródło
print_r () może wydrukować wartość, ale także jeśli drugi parametr flagi zostanie przekazany i ma wartość PRAWDA - zwróci wydrukowany wynik jako ciąg i nic nie zostanie wysłane na standardowe wyjście. O var_dump. Jeśli zainstalowany jest debuger XDebug, wyniki wyjściowe zostaną sformatowane w znacznie bardziej czytelny i zrozumiały sposób.
źródło
oba są konstrukcjami językowymi. echo zwraca nieważność, a druk zwraca 1. echo jest uważane za nieco szybsze niż druk.
źródło