@zzzmaikzzz
Junior-web

Что выведет следующий код php?

echo 1 . print(2), 3;

Почему выводит: 2113 ?

Объясните по шагам... и запятая после print(2)...
  • Вопрос задан
  • 596 просмотров
Решения вопроса 1
evnuh
@evnuh
Поиск Гугл помог мне, впусти и ты его в свой дом
Выполняем программу:

1. Видим echo, значит нужно распечатать её аргумент(-ы в нашем случае, т.к. их два, указаны через запятую. echo - это и функция и языковая коснтрукция, можно вызвать со скобками, можно без, через запятую просто передаём аргументы, сколько хотим)
2. Начинаем смотреть, какие аргументы надо распечатать: 1 . print(2) и 3
3. Первый аргумент составной, требует доп. вычислений. Начинаем его вычислять:
4. Сначала конкатенируем строку "1" с РЕЗУЛЬТАТОМ ВЫПОЛНЕНИЯ ФУНКЦИИ print(2).
5. Чтобы получить результат функции, её надо выоплнить. Выполняем print(2) -> печатается двойка. Вот откуда у нас первый символ "2".
6. Результат выполнения функции print() всегда 1.
Returns 1, always.

7. Значит результатом конкатенации у нас будет "1" . "1" -> значит первый аргумент для печати = "11" Печатаем его, на экране у нас теперь 211.
8. Печатаем второй аргумент "3". Получилось 2113.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
alexey-m-ukolov
@alexey-m-ukolov Куратор тега PHP
2 - результат вызова print(2). Функция вызывается до echo, для того, чтобы вычислить, что, собственно, нужно вывести.
1 - единица в echo.
1 - возвращаемое из print() значение.
3 - и так понятно.

и запятая после print(2)
Это фича echo.
Ответ написан
Комментировать
Akdmeh
@Akdmeh
PHP, Yii2, Music
Сперва срабатывает функция print, которая выводит 2.
Эта функция возвращает значение 1, если вывод был успешным. Вот именно значение 1 подставляется на ее место.
И затем уже происходит echo строки 1.'1'.3.
В итоге получаем 2113 - все логично и согласно документации, пусть это и довольно тонкий момент
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽