Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Какие принципиальные отличия echo и print?

Сообщения:  [1-6] 

 
 автор: Саня   (13.06.2011 в 09:55)   письмо автору
 
   для: Косорылый   (13.06.2011 в 08:25)
 

> а зачем тут кавычки....
Затем, что это строковая константа, которая должна уйти в выходной буффер. Я мог оставить её без кавычек и она всё равно преобразовалась бы в строку.

<?
print print '2';

Что отправится на экран в случае этого скрипта?

То же самое что и
<?
$a 
= print '2';
print 
$a;

Потрудитесь почитать мануал: http://php.net/print

Если конструкция языка возвращает какое-то значение, она не перестаёт быть конструкцией языка. Тем более в мануале об этом написано явно.

  Ответить  
 
 автор: Косорылый   (13.06.2011 в 08:25)   письмо автору
 
   для: Саня   (12.06.2011 в 21:05)
 

Противоречим себе.....
Разница в том, что print всегда возвращает 1 как результат своей работы. 

Может не ошибся..насчет функции....
'1'
а зачем тут кавычки....

  Ответить  
 
 автор: Саня   (12.06.2011 в 21:05)   письмо автору
 
   для: Ильдар   (12.06.2011 в 16:28)
 

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

Echo тоже не без грешка. Она может принимать несколько параметров, которые отправляются в выходной буффер последовательно. Это аналогично предварительной конкатенации строк при помощи оператора ".".

Print и echo — один из примеров неоднозначности и запутанности языка, за что многие любят хаять PHP. Например:

<?
print '1' 'abcd' '2';
print (
'1' 'abcd' '2');
echo 
'1' 'abcd' '2';
echo 
'1''abcd''2';
echo (
'1''abcd''2');

По сути все эти примеры делают одно и тоже с одинаковым результатом. Недостаток такого подхода — в его неодинаковости. Было бы намного проще, если бы существовала только одна функция вывода

По поводу производительности не стоит волноваться. В соседней теме я уже сказал кое-что по этому поводу.

Cheops ошибся. И print, и echo — конструкции языка, а не функции. И поэтому обе могут применяться без круглых скобок.

  Ответить  
 
 автор: cheops   (12.06.2011 в 17:06)   письмо автору
 
   для: Ильдар   (12.06.2011 в 16:28)
 

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

PS Вообще по логике echo должно быть чуть быстрее. Однако, реально измерить это довольно трудно - первый прогон скрипта не может засчитываться, а потом, когда PHP разогрет и получен интерпретируемый байт-код, боюсь и разницу уже нет - обе конструкции приводятся к одному и тому же представлению.

  Ответить  
 
 автор: elenaki   (12.06.2011 в 16:48)   письмо автору
 
   для: Ильдар   (12.06.2011 в 16:28)
 

отличие в том, что print возвращает true/false
попробуйте написать <?=print(1);?> и вам выдаст 11
первая единица будет означать true. скажете, где такие
идиоты, которые ставят = перед print? представьте себе,
есть такие! да еще называют себя программистами!

  Ответить  
 
 автор: Ильдар   (12.06.2011 в 16:28)   письмо автору
 
 

Приходилось слышать что print работает чуть быстрей чем echo. Насколько правда? И вообще какое отличие?

  Ответить  

Сообщения:  [1-6] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования