Чем echo отличается от print

На собеседованиях любят задавать самые каверзные вопросы с подколками. Одним из таких вопросов является вопрос о разнице между echo и print. Многие даже очень опытные программисты считают их синонимами, потому что ведут себя они одинаково:

<?php
print "Hello World!";
echo "Hello World!";

И то и то выдаст "Hello World!", однако разница между ними все же есть, просто сложно придумать ситуацию, в которой она была бы заметна:

  1. print возвращает true/false в зависимости от того, удачен вывод или нет. Я не представляю себе ситуации, в которой она бы вернула false, но наверное есть... echo ничего не возвращает;
  2. echo нельзя использовать со скобками, т.е. echo(123) - выдаст ошибку, print(123) - нормально отработает;
  3. Понятное дело что из-за п.1 echo работает быстрее чем print. Разница несущественная, но есть и это неплохо знать;
  4. В echo можно передать несколько параметров для вывода через запятую (echo 123, 'aaaa', 33 ;) и они выведутся последовательно. В print нет.

Я не уверен, все ли я описал тут, но думаю достаточно чтобы выяснить что они ни разу не синонимы. Если кто знает еще - пишите в коменты - буду рад узнать что-нить новое.

  • http://www.lkdz.ru EVILdoer

    Просто print() — функция,
    а echo — конструкция языка.

  • Станислав

    на эту тему есть такая фишка
    echo ’3′ + ’0.5′ , print(’2′) + 1;

  • test

    1 – не правда. Всегда возвращает 1.
    2 – не правда, можно echo со скобками использовать.

    зачем писать неправду? :)

  • Илья

    test:

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

  • Севр

    Илья, test скорее всего говорил о том что print возвращает 1 ( тип данных int), а не булево true. Это большая разница.

  • http://romul.name/ Роман

    Всегда использовал echo, print – дольше писать ))

  • http://a2x.ru a2x

    a2x.ru/?p=103

    Попробовал разобраться, так как в статье и комментариях было много спорных моментов

  • Nitehost

    Во-первых print() – это тоже конструкция языка.
    Во-вторых print() выводит переносы строки, то есть выведет строки как есть.
    Пример:
    print «Это занимет
    несколько строк. Переводы строки тоже
    выводятся»;
    Источник: http://www.php.su/functions/?print

  • http://%/zzfyawl3 francisco

    only@srzub6.fresh» rel=»nofollow»>.

    tnanks for information :o

  • http://%/zzuplef8 rafael

    blood@gxcyp9.stood» rel=»nofollow»>.

    спс 8O…

  • http://%/zzhquvp5 jon

    :shock:

    good :mrgreen:

  • http://%/zzcptrz4 tony

    :oops:

    сэнкс за инфу :razz:

  • http://%/zzdpyvu6 salvador

    :!:

    спс за инфу :?


Информеры с тИЦ и PR: получить код для сайта