Выбор ответа Middle Типы и строгая типизация обновлено

Строки с цифрами в арифметике PHP 8

Вопрос

Что произойдёт в PHP 8 при вычислении "5 apples" + 10 и "apples" + 10?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Первое даст 15 с предупреждением, второе бросит TypeError. В PHP 8 правила числовых строк стали строже (RFC Saner numeric strings).

Варианты ответа

  1. Оба выражения дадут 10 без ошибок и предупреждений
  2. Первое даст 15 без предупреждений, второе 10 с предупреждением
  3. Оба выражения бросят TypeError: Unsupported operand types
  4. Первое даст 15 с предупреждением, второе бросит TypeErrorправильный ответ

Разбор

В PHP 8 правила числовых строк стали строже (RFC Saner numeric strings). Строка, которая начинается с числа, используется как это число, но с предупреждением: 15 и Warning. Полностью нечисловая строка в арифметике теперь бросает TypeError: Unsupported operand types. В PHP 7 второй случай давал 10 с предупреждением. Пробелы в конце числовой строки с PHP 8 допустимы: "12 " + 1 это 13 без предупреждений.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.