Должен ли я использовать echo или print в php-скриптах? - PullRequest
13 голосов
/ 30 июля 2011

Какое утверждение я должен использовать в php-скриптах?Эхо или Принт?Что быстрее и чаще всего используется?Заранее спасибо.

Ответы [ 8 ]

16 голосов
/ 31 июля 2013

И echo, и print являются языковыми конструкциями PHP (не функциями).Что лучше, зависит от ваших приоритетов.Я бы рассмотрел три возможных приоритета: 1. Вы упомянули скорость;2. Вы упомянули широкое использование;3. Я бы добавил гибкость.

  1. Скорость: как уже упоминали многие, эхо немного быстрее (особенно при использовании синтаксиса с несколькими аргументами, элементы которого разделены запятыми), ноРазница настолько мала, что имеет значение только в коде с тысячами циклов, где скорость действительно имеет значение.См. http://www.phpbench.com для тестов.

  2. Широкое использование: кажется, что по традиции эхо более широко используется для PHP, чем для печати.Это довольно анекдотично, но я думаю, вы придете к тому же выводу, когда будете читать код PHP из самых разных источников.

  3. Гибкость: я считаю, что печать определенно более гибкая, чемэхо в выражении кода.Эхо имеет только одно «преимущество» перед печатью: вы можете использовать следующий синтаксис: echo $arg1, $arg2, ... использование запятых для перечисления аргументов;print не поддерживает синтаксис запятой.Однако вы можете заменить запятые точками (.) И получить точно такой же результат как в echo, так и в print: print $arg1. $arg2. ....Таким образом, этот синтаксис обеспечивает нулевое преимущество в гибкости и выражении.Это небольшое преимущество, потому что это приводит к более быстрому коду, как я упоминал в # 1, но в 99% кода это, вероятно, не имеет значения.

    Напротив, единственное, что может сделать печать, чего не может сделать эхо, - это вернуть значение и, таким образом, оно может полностью функционировать как функция.С одной стороны, оно ограничено, потому что print всегда возвращает значение 1, несмотря ни на что.С другой стороны, вы можете сделать это с помощью print, но не с помощью echo:

    <?php ($age >= 18) ? print('Can vote.') : print('Cannot vote.'); ?>

    (пример взят из PHP и MySQL 2010 Murach, стр. 227)

    Таким образом, печать может выражать практически всю ту же гибкость в коде, что и эхо, но у эха есть один важный случай использования, когда он не может сделать то, что может сделать печать: печать может действовать как функция в тех случаях, когда это может быть полезно.(Я говорю «действуй как функция», потому что это не функция; это языковая конструкция, как и эхо.)

    Что касается сокращенного синтаксиса эха <?=$foo?> (<?php=$foo?> также работает сPHP 5.4: http://us2.php.net/manual/en/function.echo.php), это можно назвать сокращением для "echo", но вы также можете назвать это сокращением для "print", потому что это просто другая языковая конструкция. Нет логической основы для вызова этого«преимущество» эха над печатью, как утверждают некоторые, поскольку эта конструкция не является ни эхом, ни печатью - это альтернативная конструкция, которая делает то же самое, что и оба.

Лично для меня я предпочитаю выбирать один и всегда придерживаться его. Лично я предпочитаю печатать из-за его слегка превосходящего преимущества в гибкости кодирования, и потому что «печать» звучит для меня более интуитивно - это чисто субъективно.не волнуйтесь, что эхо, вероятно, более широко используется, потому что печать одинаково хорошо понимается, если другие должны читать мой код. Для 1% кода, где скорость печати действительносоюзник имеет значение, тогда я буду использовать эхо.

11 голосов
/ 30 июля 2011

Предположительно echo быстрее, но любой из них будет работать нормально.

Echo также предлагает сокращенный синтаксис при встраивании php в HTML. т.е.

    I have <?=$foo?> foo.

против

     I have <?php echo $foo;?> foo.

См. http://us2.php.net/manual/en/function.echo.php

5 голосов
/ 30 июля 2011

Я сам проверил:

$StartTime=microtime(1);
echo '<div style="display:none">';
for($i=0;$i<100000;$i++)
    echo "Hello world!<br />";

echo "</div>Echo: ".round(microtime(1)-$StartTime,5);

$StartTime=microtime(1);
echo '<div style="display:none">';
for($i=0;$i<100000;$i++)
    print "Hello world!<br />";

echo "</div><br />Print: ".round(microtime(1)-$StartTime,5);

эхо около .09 с
отпечаток около .3 с .5 с

5 голосов
/ 30 июля 2011

Это не влияет на способ отображения текста, но оба имеют различное поведение ...

Например, print возвращает значение (true или false) в зависимости от того, может ли он отображать текст для печати; вместо этого echo просто дает и продолжает.

Это действительно так:

if (print ($variable)) {
//do something
}

Это бессмысленно:

if (echo $variable) {
//do something
}
1 голос
/ 30 июля 2011

эхо быстрее. также echo () может печатать более 1 аргумента, print () может печатать только 1 аргумент.

0 голосов
/ 30 июля 2011

IMO это не вопрос скорости. Если бы я разрабатывал приложение, в котором разница в скорости между эхо и печатью имеет какое-либо значение, я бы посчитал это явным признаком использования другого (не интерпретируемого) языка программирования, чем PHP.

Но пока вы придерживаетесь PHP, это - IMVHO - просто вопрос вкуса. И кстати, я предпочитаю echo, но только потому, что это означает меньше печатать;)

0 голосов
/ 30 июля 2011

Самый быстрый способ отобразить несколько строк:

echo "string","string","string";

Для этого даже не нужно выполнять конкатенацию строки, он просто повторяет одну строку за другой.В print() нет ничего плохого, и я думаю, что в конце дня, если вы не отобразите миллионы строк, вы действительно не увидите разницу.

0 голосов
/ 30 июля 2011

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

Вот некоторые контрольные показатели: http://www.phpbench.com прокрутите вниз до «эхо против печати»

...