Что выведет следующий код php?
Выполняем программу:
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.
Сперва срабатывает функция print, которая выводит 2.
Эта функция возвращает значение 1, если вывод был успешным. Вот именно значение 1 подставляется на ее место.
И затем уже происходит echo строки 1.'1'.3.
В итоге получаем 2113 - все логично и согласно документации, пусть это и довольно тонкий момент