Задать вопрос
Keanor
@Keanor
Ведущий разработчик

Бесполезный вопрос про print(), почему получается то что получается?

узнал что print() возвращает 1, решил поигать.

Если выполнить
$a = 1 + print("3"); echo ++$a;

то на экран будет выведено 33, все верно: первую тройку вывел print и вернул 1, а = 1 + 1 и через инкремент вывелась вторая тройка.

Но если поменять местами 1 и print то все будет несколько иначе:
$a = print("3") + 1; echo ++$a;
выведет 42!

Перемена мест слагаемых влияет на приведение типов, но что тут происходит все равно не понятно.

Каким-то образом +1 переместился внутрь print() что нахожу забавным, есть ли тут гуру которые понимают как это работает?
  • Вопрос задан
  • 231 просмотр
Подписаться 2 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Skillbox
    Веб-разработчик на PHP
    9 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Решения вопроса 1
@kapai69
print не является "настоящей" функцией (это конструкция языка), поэтому заключать аргументы в скобки необязательно.

Цитата из мануала.
То есть он будет выводить все до точки с запятой, а не то что у него находится в скобках. Поэтому второе выражение будет выглядеть как
$a = print "3" + 1; echo ++$a;
Отсюда и результат.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
от 200 000 до 290 000 ₽