Что выведет код 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 ошибок.

Термины по теме