2008-10-24 7 views

Odpowiedz

243

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

  1. Speed. Istnieje różnica między tymi dwoma, ale pod względem szybkości, , powinno być nieistotne, z którego korzystasz. echo jest nieznacznie 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żna wykonać: $ret = print "Hello World"; I $ret będzie 1. Oznacza to, że wydruk może być używany jako część bardziej złożonego wyrażenia, którego echo nie może. przykład z podręcznika PHP:

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

druku jest również częścią tabeli pierwszeństwa, które musi być, jeśli ma być stosowany w złożonych wypowiedzi. Jednak na samym dole znajduje się lista pierwszeństwa. Tylko "," AND, OR i XOR są niższe.

  1. Parametry. Gramatyka brzmi: echo expression [, expression[, expression] ... ] Ale echo (expression, expression) jest nieprawidłowy. To byłoby ważne: echo ("howdy"),("partner"); taki sam jak: echo "howdy","partner"; (Umieszczenie wsporniki w tym prostym przykładzie służy bezcelowe, ponieważ nie istnieje problem pierwszeństwo operatora z jednym terminu takiego.)

więc echo bez nawiasów mogą przyjmować wiele parametrów, które ulegną łączone:

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

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

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

Echo mogą być również wykorzystywane w potrójnego działania: echo ($ B)? 'prawda fałsz'; – philjohn

+26

@philjohn Jestem prawie pewien, że twoje oświadczenie 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

+4

W interesie zrobienia czegoś, czego nie można naprawić za pomocą 'echo':' $ b? print "true": die ("false"); ' – Brilliand

5

Zgodnie z sugestią podręcznika PHP.net, przeczytaj this discussion.

Jedną z głównych różnic jest to, że echo może przyjmować wiele parametrów. Np .:

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

Jeśli szukasz do oceny wyników instrukcji wyjściowego (jak poniżej) używać print. Jeśli nie, użyj echo.

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

echo nie accept echo ('foo', 'bar') ;, ale akceptuje echo "foo", "bar"; – grilix

+2

Wiem, że ta odpowiedź jest stara, ale nie "drukuje" ZAWSZE zwraca 1? Poza tym, kiedy i dlaczego musiałbyś kiedyś przetestować, żeby się upewnić, że coś jest wydrukowane? To jest po prostu NIE POTRZEBNE, KIEDYKOLWIEK! Szczerze mówiąc, druk jest bezużyteczny i powinien zostać usunięty na korzyść ECHO! –

63

Są to:

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

Aby dodać do powyższych odpowiedzi, podczas drukowania może wziąć tylko jeden parametr, pozwoli na łączenie wielu wartości, czyli:

$count = 5; 

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

To jest 5 wartości w 1 parametr

4

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

Lubię używać print() tylko w sytuacjach, takich jak:

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

Czy możesz to wyjaśnić, Sir? – Legend