Pytanie Czym różni się echo i print w PHP? [duplikować]


Możliwe duplikaty:
Odniesienie: Porównanie drukowania PHP i echa 

Czy jest jakaś zasadnicza i zasadnicza różnica między tymi dwiema funkcjami w PHP?


188
2017-10-24 16:25


pochodzenie




Odpowiedzi:


Od: http://web.archive.org/web/20090221144611/http://faqts.com/knowledge_base/view.phtml/aid/1/fid/40

  1. Prędkość. Istnieje różnica między nimi, ale jest to szybkie powinno być nieistotne, z którego korzystasz. echo jest marginalnie szybsze ponieważ nie ustawia wartości zwracanej, jeśli naprawdę chcesz dostać się do nitty gritty.

  2. Wyrażenie. print() zachowuje się jak funkcja, którą możesz wykonywać: $ret = print "Hello World"; I $ret będzie 1. Oznacza to, że druk może być użyty jako część bardziej złożonego wyrażenia, w którym echo nie może. Na przykład z podręcznika PHP:

$b ? print "true" : print "false";

print jest również częścią tabeli pierwszeństwa, która musi być, jeśli jest ma być użyty w złożonym wyrażeniu. Jest na samym dole listy pierwszeństwa. Tylko "," AND, OR i XOR są niższe.

  1. Parametry. Gramatyka to: echo expression [, expression[, expression] ... ] Ale echo ( expression, expression ) nie jest poprawny. Byłoby to ważne: echo ("howdy"),("partner"); taki sam jak: echo "howdy","partner"; (Umieszczenie nawiasów w tym prostym przykładzie służy nie ma sensu, ponieważ nie ma problemu z priorytetem operatora z jednym taki termin.)

Tak więc echo bez nawiasów może przyjmować wiele parametrów, które dostajemy połączony:

   echo  "and a ", 1, 2, 3;   // comma-separated without parentheses
   echo ("and a 123");        // just one parameter with parentheses

print() może przyjąć tylko jeden parametr:

   print ("and a 123");
   print  "and a 123";

257
2017-10-24 16:27



Echo może być również używane w operacji trójskładnikowej: echo ($ b)? 'prawda fałsz'; - philjohn
@philjohn Jestem prawie pewien, że twoje zdanie jest ekwiwalentne do: echo (($ b)? 'true': 'false'); i nie: (echo ($ b))? 'prawda fałsz'; Tak więc echo nie jest częścią rzeczywistego stanu w operacji trójskładnikowej. - Bart
W interesie zrobienia czegoś, z czym nie można się posłużyć echo: $b ? print "true" : die("false"); - Brilliand
Dokumentacja dla print jednoznacznie zaprzecza tej odpowiedzi: "print w rzeczywistości nie jest prawdziwą funkcją (jest to konstrukcja językowa) ". - jameshfisher
Od w3C: Oświadczenie print PHP: print jest również konstrukcją językową, - Martin


Oni są:

  • print przyjmuje tylko jeden parametr, a echo może mieć wiele parametrów.
  • print zwraca wartość (1), więc może być użyte jako wyrażenie.
  • echo jest nieco szybsze.

66
2017-10-24 16:29





Aby dodać do powyższych odpowiedzi, podczas gdy drukowanie może przyjąć tylko jeden parametr, pozwoli to na łączenie wielu wartości, tj .:

$count = 5;

print "This is " . $count . " values in " . $count/5 . " parameter";

Jest to 5 wartości w 1 parametrze


8
2018-01-15 16:47





Jak sugeruje podręcznik PHP.net, przeczytaj ta dyskusja.

Jedną z głównych różnic jest to echo może wytworzyć wiele parametrów. Na przykład.:

echo 'foo', 'bar';   // Concatenates the 2 strings
print('foo', 'bar'); // Fatal error

Jeśli chcesz ocenić wynik wyciągu wyjściowego (jak poniżej) użyj print. Jeśli nie, użyj echo.

$res = print('test');
var_dump($res); //bool(true)

6
2017-10-24 16:28



echo nie akceptuje echa ("foo", "bar") ;, ale akceptuje echo "foo", "bar"; - grilix
Wiem, że ta odpowiedź jest stara, ale nie printZAWSZE wracasz 1? Poza tym, kiedy i dlaczego musiałbyś kiedyś przetestować, żeby się upewnić, że coś jest wydrukowane? To jest po prostu prosto NIE POTRZEBNE, KIEDYKOLWIEK! Szczerze mówiąc, druk jest bezużyteczny i powinien zostać usunięty na korzyść ECHO! - Solomon Closson


Myślę print() jest wolniejszy niż echo.

Lubię korzystać print() tylko w sytuacjach takich jak:

 echo 'Doing some stuff... ';
 foo() and print("ok.\n") or print("error: " . getError() . ".\n");

5
2018-03-19 18:04



Czy możesz to wyjaśnić, Sir? - Legend
Wow, to jest naprawdę zła odpowiedź sprzed dziewięciu lat. Nie sądzę, żebyśmy mogli ją ulepszyć. Przepraszam! - grilix
@Legend Myślę, że @grilix odnosi się do możliwości, aby print () zwrócił 1. jeśli foo() funkcja zwraca false, a następnie and część jest fałszywa ... tak, że pozwala na drugą część oceny (po or ) wykonać. To interesujące wykorzystanie print o którym nie pomyślałem. - Armstrongest