Неожиданный порядок PHP с печатью и эхом

Когда я выполняю код: echo 'a' . print('2') . 'c';, я получаю 2ca1.

Я могу сообразить, что print('2') запишите 2 и echo print('1') напечатаю 1

Но почему буква «c» пишется после оператора печати, а не в конце?

Вместо этого я ожидал увидеть «2a1c».

Интересно, как stackoverflow.com/questions/13176046/… был закрыт тем же основным вопросом.

Nigel Ren 30.04.2024 13:10

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

Dharman 30.04.2024 15:40
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
2
60
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

print на самом деле не функция, а языковая конструкция.

Как указано в руководстве ,

Заключение аргумента print в круглые скобки не вызовет синтаксическую ошибку и создаст синтаксис, похожий на обычный вызов функции. Однако это может ввести в заблуждение, поскольку круглые скобки на самом деле являются частью выводимого выражения, а не частью самого синтаксиса печати.

Если ('2') здесь всего лишь выражение, то это означает, что оно по сути то же самое, что и print '2' . 'c' — так что сначала происходит конкатенация, а затем печатается ее результат.

А затем возвращаемое значение print - всегда 1 - объединяется с a, а затем echo вызывает запись последнего, a1, в выходной буфер после уже напечатанного 2c.

Другие вопросы по теме