Во время изучения PHP мы частом видим в примерах 2 способа вывода данных. Это языковые конструкции echo и print.
Да, это не функции, а именно языковые конструкции, как и написано в руководстве.
У меня, думаю как и у всех новичков в php, возникает вопрос: В чем же отличия между echo и print.
Количество строк для вывода
Обратимся к руководству по php:
echo — Выводит одну или более строк.
print — Выводит строку.
То есть если нам требуется вывести несколько строк или параметров, то проще это сделать с помощью echo. Если же надо вывести несколько аргументов с помощью print, то стоит использовать конкатенацию.
Пример для наглядности:
1 2 3 4 5 6 | <?php echo 'Эта ', 'строка ', 'была ', 'создана ', 'несколькими параметрами.'; echo 'Эта ' . 'строка ' . 'была ' . 'создана ' . 'с помощью конкатенации.'; // в print получится только так: print 'Эта ' . 'строка ' . 'была ' . 'создана ' . 'с помощью конкатенации.'; ?> |
Возвращаемые значения
Обратимся к руководству по php:
echo — Эта конструкция не возвращает значения после выполнения.
print — Возвращает 1, всегда.
То есть конструкция print( ) возвращает статус состояния произведенной операции, в конструкция echo просто выводит текст и не более того.
Применяться print( ) может в условных конструкциях с тернарным оператором:
1 2 3 4 | <?php $var = 2; ( $var > 1 ) ? print 'yes' : print 'no'; ?> |
Если же заменить print на echo, то данная конструкция работать не будет, т.к. echo не является функцией.
Скорость загрузки
- Ниже показано сравнение скорости загрузки с сайта phpbench.com.
На картинке видно, что echo обрабатывается быстрее, чем print.
Разница обсуловлена тем, что функция print возвращает значение, о чем написано в пункте 2.
- Также на хабре besisland провел испытание, в которых выводил 1000 раз по 1000 строк длиной по 32 каждую.
Были использованы 5 методов.
Испытания для каждого метода проводились по 20 раз, средние результаты вполне совпадают с ожидаемыми:
1 2 3 4 5 | print "$value<br />"; // 1,727 с echo "$value<br />"; // 1,727 с print $value . '<br />'; // 1,462 с echo $value . '<br />'; // 1,428 с echo $value, '<br />'; // 1,321 с |
Какую конструкцию использовать ?
Строгой принципиальности нету. Но, как не крути, наиболее распространена конструкция Echo.
Print допустим в некоторых случаях, актуальность которого указан в пункте 2.
Если же вы, как и я, только начинаете учить php и решаете какую конструкцию использовать, то мой совет — использовать echo.