Как эхо и печать отличаются в PHP?

Возможный дубликат:
Ссылка: сравнение печати и эха PHP

Есть ли какое-либо существенное и принципиальное различие между этими двумя функциями в PHP?

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

  1. Скорость. Есть разница между ними, но по скорости это должно быть неважно, какой из них вы используете. echo немного быстрее, поскольку он не устанавливает возвращаемое значение, если вы действительно хотите перейти к nitty gritty.

  2. Expression. print() ведет себя как функция, которую вы можете сделать: $ret = print "Hello World" ; И $ret будет 1 . Это означает, что печать может использоваться как часть более сложного выражения, где эхо не может. Пример из руководства PHP:

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

print также является частью таблицы приоритетов, которая должна быть, если она должна использоваться в сложном выражении. Тем не менее, он находится внизу списка приоритетов. Только "," AND, OR и XOR ниже.

  1. Параметр (ы). Грамматика: echo expression [, expression[, expression] ... ] Но echo ( expression, expression ) недопустимо. Это было бы справедливо: echo ("howdy"),("partner") ; такие же как: echo "howdy","partner" ; (Помещение скобок в этом простом примере не имеет никакой цели, поскольку нет проблемы с приоритетом работы с одним термином, подобным этому.)

Таким образом, эхо без круглых скобок может принимать несколько параметров, которые объединяются:

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

print() может принимать только один параметр:

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

Они есть:

  • print принимает только один параметр, в то время как эхо может иметь несколько параметров.
  • print возвращает значение (1), поэтому его можно использовать как выражение.
  • эхо немного быстрее.

Чтобы добавить к приведенным выше ответам, в то время как печать может принимать только один параметр, это позволит объединить несколько значений, то есть:

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

Это 5 значений в 1 параметре

Как предлагает руководство PHP.net, прочитайте эту дискуссию .

Одно из главных отличий заключается в том, что echo может принимать несколько параметров для вывода. Например:

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

Если вы хотите оценить результат вывода (как показано ниже), используйте print . Если нет, используйте echo .

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

Я думаю, print() медленнее, чем echo .

Мне нравится использовать print() только для таких ситуаций, как:

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