Эта тема на forum.dklab.ru


Xoce: Отличия операторов print и echo.
Скажите пожалуйста в чем отличия этих операторов друг от друга?
Есть ли припципиальная разница или кому как больше нравиться, тот так и рисует?

.
bæv:
По-моему, главное отличие в том, что print работает как функция -- например, возвращает true или false.
Дмитрий Эсс:
http://www.faqts.com/knowledge_base/view.phtml/aid/1/fid/40
Ильяшов Александр:
http://ru3.php.net/manual/ru/function.print.php
http://ru3.php.net/manual/ru/function.echo.php
Почитайте и все пройдет
Дмитрий Котеров:
Print тоже не совсем обычная цункция. Например, такой код дает ошибку:

class MyClass {
function print() {}
}

Хотя с любой другой функцией (вроде chdir или trim) он работает.
bæv:
Print тоже не совсем обычная цункция.

Print -- не функция, а "языковая конструкция, работающая как функция" (естественно, что не всегда).

Например, такой код дает ошибку:...
Ну, как-раз это в "мануале" специально оговаривается:

Variable functions won't work with language constructs such as echo(), print(), unset(), isset(), empty(), include(), require() and the like.

Note: Because this is a language construct and not a function, it cannot be called using variable functions

Дмитрий Эсс:
Разработчики пишут:
print() is not actually a real function (it is a language construct) so you are not required to use parentheses with its argument list.
Но сами пихают эту псевдофункцию в раздел мана с функциями. Да, и print() возвращает значение. ИМХО нет смысла спорить о том, как это творение называть.
Xoce:
Вот что я заметил, вернее будет сказать проконстатировал :)
такая конструкция работает:
<?(!file_exists("modif.php")? print "файла нет": print "файл есть")?>
а вот такая нет:
<?(!file_exists("modif.php")? echo "файла нет": echo "файл есть")?>

Может я в чом то ошибся?

Отмечу еще момент когда можно записать вот так:
<?=(!file_exists("modif.php")? "файла нет": "файл есть")?>
и все работает, следовательно PHP подставляет оперетор print

Так почему же print срабатывает так как я того ожидаю, а echo - нет? На практике это очень большое отличие как выясняется...
_
Юрий Насретдинов:
Xoce:
print работает как функция, а echo - это всего-лишь оператор. То же самое с include. Это не функция, а конструкция, и для неё действуют некоторые ограничения...

Эта тема на forum.dklab.ru