Что выведет код Junior PHP 8.x: enum, readonly, match спрашивают часто обновлено
match: строгое сравнение и ошибки
Вопрос
Что выведет скрипт (PHP 8.3)? По строке на каждый вывод.
<?php
$v = '1';
echo match ($v) {
1 => 'int',
'1' => 'string',
default => 'other',
}, "\n";
echo match (true) {
$v > 5 => 'big',
$v > 0 => 'small',
default => 'none',
}, "\n";
try {
echo match (3) { 1, 2 => 'low' };
} catch (\UnhandledMatchError $e) {
echo get_class($e), "\n";
}
Попробуйте сами
Напишите, что выведет код: каждый вывод с новой строки.
Показать ответ и разбор
Коротко
Код выведет: string, small, UnhandledMatchError. match сравнивает через ===: строка "1" не равна числу 1, срабатывает ветка string. match (true) выбирает первую ветку с истинным условием: "1" 0, small.
Что выведет
string
small
UnhandledMatchError
Разбор
match сравнивает через ===: строка "1" не равна числу 1, срабатывает ветка string. match (true) выбирает первую ветку с истинным условием: "1" > 0, small. Значение 3 не попало ни в одну ветку, а default нет: UnhandledMatchError.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.