PHP разница между print и echo

Я считаю, что необязательно знать разницу между ними, но все же мне было интересно разобраться, потому как умение досконально разобраться в вопросе — полезное умение 🙂

Самое логичное объяснение (не вдаваясь в подробности) разницы состоит в том, что print это функция, а echo — конструкция языка. Ведь все совпадает?

Я так и думал. Решил пойти не самым стандартным путем, но все же.

Я скачал сорцы php, нашел там тест функции print (хотел найти сорцы функции, которые как я сейчас понимаю дали бы мне не много), но к своему удивлению в заголовке теста нашел:

/* Prototype : int print ( string $arg )
* Description: Output a string
* Source code: n/a, print is a language construct not an extension function
* Test based on php.net manual example.
*/

Потом я полез куда надо, а именно в мануалы php.

print — Output a string

Description
print ( string $arg)
Outputs arg.
print() is not actually a real function (it is a
language construct) so you are not required to use parentheses
with its argument list.

Return Values
Returns 1, always.

echo Output one or more strings

Description
void echo ( string $arg1 [, string$…] )
Outputs all parameters.
echo() is not actually a function (it is a
language construct), so you are not required to use parentheses
with it. echo() (unlike some other language
constructs) does not behave like a function, so it cannot
always be used in the context of a function. Additionally, if you want to
pass more than one parameter to echo(), the parameters
must not be enclosed within parentheses.

Return Values
No value is returned.

 

Вот они и очевидные различия:

1 Print, в отличие от echo зачем то всегда возвращает 1

2 В echo, в отличие от print можно передавать больше 1 строки

К сожалеию, в силу своего малого опыта я не понимаю этих особенностей и областей их применения, но надеюсь когда-нибудь это станет понятно.

Единственное, что приходит в голову сразу же, это наверное то, что:

1
echo $string1, $string2;

будет работать быстрее, чем

1
print ($string1 . $string2);

и соответственно

1
echo ($string1 . $string2);

Потому что, если я опять же все правильно понял, в первом случае строчки выведутся, а во втором сначала сложатся, а потом выведется результирующая строка. Но нет, так нет, тогда я ничего не понял 🙂

Комментарии:


  1. vinogradinka

    я внимательно прочитала ваши выводы и тоже порылась в мануалах. Вы скромничаете! Все на мой взгляд так и остоит. Принт древняя и мало интересная функция, и если ее часто использовать то прирост затрат рисурсной части есть. Я на своем VPN сервере просто тестила…

  2. admin

    vinogradinka, на каком VPN севере? 😀
    Или я чего не понял?




YouTube бесплатно навести проклятие порчу