Когда я выполняю код: echo 'a' . print('2') . 'c';
, я получаю 2ca1
.
Я могу сообразить, что print('2')
запишите 2 и echo print('1')
напечатаю 1
Но почему буква «c» пишется после оператора печати, а не в конце?
Вместо этого я ожидал увидеть «2a1c».
Вот почему не следует добавлять круглые скобки в ненужных местах, поскольку это сбивает с толку.
print
на самом деле не функция, а языковая конструкция.
Как указано в руководстве ,
Заключение аргумента print в круглые скобки не вызовет синтаксическую ошибку и создаст синтаксис, похожий на обычный вызов функции. Однако это может ввести в заблуждение, поскольку круглые скобки на самом деле являются частью выводимого выражения, а не частью самого синтаксиса печати.
Если ('2')
здесь всего лишь выражение, то это означает, что оно по сути то же самое, что и print '2' . 'c'
— так что сначала происходит конкатенация, а затем печатается ее результат.
А затем возвращаемое значение print
- всегда 1
- объединяется с a
, а затем echo
вызывает запись последнего, a1
, в выходной буфер после уже напечатанного 2c
.
Интересно, как stackoverflow.com/questions/13176046/… был закрыт тем же основным вопросом.