Выбор ответа Middle Типы и строгая типизация обновлено
Строки с цифрами в арифметике PHP 8
Вопрос
Что произойдёт в PHP 8 при вычислении "5 apples" + 10 и "apples" + 10?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Первое даст 15 с предупреждением, второе бросит TypeError. В PHP 8 правила числовых строк стали строже (RFC Saner numeric strings).
Варианты ответа
- Оба выражения дадут
10без ошибок и предупреждений - Первое даст
15без предупреждений, второе10с предупреждением - Оба выражения бросят
TypeError: Unsupported operand types - Первое даст
15с предупреждением, второе броситTypeErrorправильный ответ
Разбор
В PHP 8 правила числовых строк стали строже (RFC Saner numeric strings). Строка, которая начинается с числа, используется как это число, но с предупреждением: 15 и Warning. Полностью нечисловая строка в арифметике теперь бросает TypeError: Unsupported operand types. В PHP 7 второй случай давал 10 с предупреждением. Пробелы в конце числовой строки с PHP 8 допустимы: "12 " + 1 это 13 без предупреждений.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.