Possible Duplicate:
Reference: Comparing PHP's print and echo
Есть ли какое-то серьезное и фундаментальное различие между этими двумя функциями в PHP?






Из: http://web.archive.org/web/20090221144611/http://faqts.com/knowledge_base/view.phtml/aid/1/fid/40
Скорость. Между ними есть разница, но по скорости. не имеет значения, какой из них вы используете. эхо немного быстрее поскольку он не устанавливает возвращаемое значение, если вы действительно хотите перейти к мельчайшие детали.
Выражение. print() ведет себя как функция в том смысле, что вы можете:
$ret = print "Hello World"; И $ret будет 1. Это означает, что печать
может использоваться как часть более сложного выражения, где эхо не может. An
пример из руководства PHP:
$b ? print "true" : print "false";
print также является частью таблицы приоритетов, которая должна быть
должен использоваться в сложном выражении. Это примерно внизу
из списка приоритетов. Ниже только ,ANDORXOR.
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";
@philjohn Я почти уверен, что ваше утверждение эквивалентно: echo (($ b)? 'true': 'false'); а не: (эхо ($ b))? 'истина': 'ложь'; Таким образом, эхо не является частью фактического состояния тернарной операции.
В интересах сделать что-то, что невозможно сделать с echo: $b ? print "true" : die("false");
@Bart print также не является частью условия в примере dl __, и его включение было бы лишним. Пример philjohn дает тот же результат, что и пример dl __.
Доказательство того, что печать является языковой конструкцией, также естественно присутствует в исходном коде 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.
Из w3C: Заявление PHP print: print также является языковой конструкцией,
вы можете echo(print('test')), но вы не можете print(echo('test'))
Как предлагает руководство 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';
Я знаю, что это старый ответ, но разве print ВСЕГДА не возвращает 1? Кроме того, когда и зачем вам нужно тестировать, чтобы быть уверенным, что что-то распечатано? Это просто НЕ НУЖНО НИКОГДА! Откровенно говоря, печать бесполезна и ее следует удалить в пользу ECHO!
Они есть:
Чтобы добавить к приведенным выше ответам, хотя 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 Я думаю, что @grilix имеет в виду способность print () возвращать 1. если функция foo() возвращает false, тогда часть and ложна ... так что позволяет выполнить вторую часть оценки (после or) выполнять. Это интересное использование print, о котором я не думал.
Echo также можно использовать в тернарной операции: echo ($ b)? 'истина': 'ложь';