Подтвердить что ты не робот

Почему "эхо" 2 ". Print (2) + 3" print 521?

Кто-нибудь может рассказать внутреннюю процедуру выражения ниже?

<?php echo '2' . print(2) + 3; ?>
// outputs 521
4b9b3361

Ответ 1

Эхо конкатенированная строка, состоящая из:

Строка '2' Результат функции print ('2'), который вернет true, который будет стягирован на 1 Строка '3'

Теперь порядок операций действительно смешной, и это не может быть вообще 521! Попробуйте вариант, чтобы выяснить, что происходит не так.

echo '2'.print(2) + 3; Это дает 521

PHP анализирует это, а затем:

echo '2'. (печать ('2') + '3')) Бинго! Сначала напечатайте печать слева, напечатав "5", что оставляет нам

echo '1'. печать ( '2') Затем левая печать оценивается, поэтому мы теперь напечатали "52", оставив нас с

echo '1'. '1'; Успех. 521.

Я бы предпочел не повторять результат печати и не печатать результаты эха. Для этого очень бессмысленно.

Ответ 2

print не является функцией, поэтому скобки не работают, как вы думаете. Он принимает значение выражения (2) + 3 (5) и выводит его. Он возвращает 1 сам, который сцеплен с '2', который затем echo ed.

Ответ 3

print(2) + 3 приведет к 5 (это то же самое, что и print (2 + 3) или print 2+3. Поскольку печать на самом деле не является функцией в этом случае, скобки в основном бессмысленны. Следует отметить, что print оценивается до echo.

Выход до сих пор: 5

echo '2' . print приведет к 21, потому что print всегда возвращает 1

Теперь вывод: '521'

Ответ 4

Сначала выполняется добавление 2 и 3, которое приводит к 5 и выводится.

Следующая печать возвращает 1 всегда. Это возвращаемое значение объединяется с 2, чтобы получить 21, который затем будет эхом.