Intereting Posts
Какой шаблонный движок можно использовать как с JS, так и с PHP? Как использовать промежуточное ПО auth для управления логином / перенаправлением разных типов пользователей? php POST-переменная с заголовками Почему я получаю «неопределенную переменную» в представлении Laravel? PHP-скрипт перестает работать произвольно без ошибок PHP: регулярное выражение для поиска некоторых слов в длинной строке Проверьте, нет ли переменной пустой Extra Trailing Zero (или отсутствует нуль) Java / PHP Laravel 5 Auth – не объект в конструкции контроллера Преобразование FULL формата даты в формате Excel в Unix timestamp Как преобразовать значения массива в нижний регистр в PHP? защита php включает (с htaccess?) перенаправить после входа в систему fos user bundle symfony Вход Android с сеансом Token: как пользовательские логины и остается в сеансе до выхода из системы отправка нескольких предметов в корзину Paypal сразу с помощью php

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

Может ли кто-нибудь рассказать внутреннюю процедуру нижеследующего выражения?

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

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

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

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

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

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

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

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

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

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

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

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

До сих пор выход: 5

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

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

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

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