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

Possible Duplicate:
Reference: Comparing PHP's print and echo

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

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
221
0
193 520
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

Ответ принят как подходящий

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

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

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

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

print также является частью таблицы приоритетов, которая должна быть должен использоваться в сложном выражении. Это примерно внизу из списка приоритетов. Ниже только ,ANDORXOR.

  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";

Echo также можно использовать в тернарной операции: echo ($ b)? 'истина': 'ложь';

philjohn 23.08.2010 00:23

@philjohn Я почти уверен, что ваше утверждение эквивалентно: echo (($ b)? 'true': 'false'); а не: (эхо ($ b))? 'истина': 'ложь'; Таким образом, эхо не является частью фактического состояния тернарной операции.

Bart 15.11.2011 20:11

В интересах сделать что-то, что невозможно сделать с echo: $b ? print "true" : die("false");

Brilliand 17.08.2012 02:41

@Bart print также не является частью условия в примере dl __, и его включение было бы лишним. Пример philjohn дает тот же результат, что и пример dl __.

Orestis P. 29.05.2014 20:11

Доказательство того, что печать является языковой конструкцией, также естественно присутствует в исходном коде PHP; см. lxr.php.net/xref/PHP_5_6/Zend/zend_language_scanner.l#1146, а также lxr.php.net/xref/PHP_5_6/Zend/zend_language_parser.y#850.

slevy1 02.11.2014 12:50

Из w3C: Заявление PHP print: print также является языковой конструкцией,

Martin 03.11.2014 22:00

вы можете echo(print('test')), но вы не можете print(echo('test'))

vdegenne 22.07.2016 23:13

Как предлагает руководство 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)

echo не принимает echo ('foo', 'bar');, но принимает echo 'foo', 'bar';

grilix 19.03.2009 20:54

Я знаю, что это старый ответ, но разве print ВСЕГДА не возвращает 1? Кроме того, когда и зачем вам нужно тестировать, чтобы быть уверенным, что что-то распечатано? Это просто НЕ НУЖНО НИКОГДА! Откровенно говоря, печать бесполезна и ее следует удалить в пользу ECHO!

Solomon Closson 11.10.2013 05:24

Они есть:

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

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

$count = 5;

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

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

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

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

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

Не могли бы вы прояснить это, сэр?

Legend 04.03.2018 05:11

Вау, это действительно плохой ответ, сделанный девять лет назад, я не думаю, что мы можем его улучшить. Извиняюсь!

grilix 16.03.2018 04:38

@Legend Я думаю, что @grilix имеет в виду способность print () возвращать 1. если функция foo() возвращает false, тогда часть and ложна ... так что позволяет выполнить вторую часть оценки (после or) выполнять. Это интересное использование print, о котором я не думал.

Armstrongest 25.05.2018 01:36

Другие вопросы по теме