Оператор switch case match
Оператор switch case так же как и IF является условным.
С оператором switch можно использовать условие если, с более коротким и удобным кодом.
Если с оператором IF нам нужно было прописывать условие перед каждым выводом результата, то с оператором switch мы разделяем котлеты от мух. После switch в скобках записываем данные с которыми хотим сравнить, дальше case что_сравнить и знак : или ;
switch ($sravnivaem){
case s_etim:
echo 'перечисляем что будем сравнивать.'; }
Оператор switch сверяет выражение за выражением и если находит совпадение, выводит результаты пока не встретит команду стоп break.
Запишем (Пример с фруктами.)
$gr = 5; // у нас есть 5 груш $ap = 5; // и 5 апельсин
$fruct = $gr + $ap; // в переменную фрукт запишем количество
switch ($fruct){ //вставляем переменную для сравнения case 12: // сравниваем если 12 то выведет результат 12,11,10 case 11: // и если 11 выведет тоже самое echo ' Торгуем.'; // выводим
case 10: // следующее сравнение, но нету команды стоп, поэтому при совпадении 11 или 12 выведет и 10. echo ' Можно съездить за фруктами '; // Если будет 10 то выведется только это выражение.
break; // команда стоп, дальше сверяет по новой.
case 9: echo ' смотрим какие фрукты нужно докупить. '; // выведет при 9.
case 8: // выведете если 9 и 8 echo ' Едем на рынок.'; // если будет 8 выведет только это.
break;
default: // используется как оператор echo ' Если нет не одного совпадения. echo едим грибы'; }
Так же мы можем использовать switch с типом строка.
$esli = 'грибы'; // сверяем с переменной.
switch($esli){ //записываем переменную для условия case 'грибы'; // если грибы echo ' В роти выросли грибы ням, ням '; // выводим
break; // команда стоп, иначе выведет вместе с ягодками
case 'ягодки'; // если ягодки echo ' Если грибы не выросли, кушаем ягодки'; //выводим
break; // стоп иначе пойдем все равно в лес.
default; // не обязательно. Если нет ничего выводим. echo ' Идем в лес за ягодами и грибами. '; //пошли }
Выражение match
В php-8 подобно switch есть выражение match, при помощи которого мы можем выполнять сравнения еще боле удобно и быстрее. Давайте запишем условие с ягодами и грибами используя match.
Результат match записывается в переменную. Сравнение записывается знаком ровно больше => . Перечисления через запятую, а точку с запятой ставим после закрывающей фигурной скобки. В конце default иначе будет ошибка. Пишем
$result = match ($esli) { // в переменную записываем результат. 'грибы' => 'В роти выросли грибы ням ням ', // если в переменной грибы, выводим 'ягодки' => ' Если грибы не выросли, кушаем ягодки', // если ягодки, выводим
default => "Идем в лес за ягодами и грибами. " // если ничего, пошли в лес
}; echo $result;
А еще можно было вывести результат match сразу, записав условие через. Попробуйте сами изменить в первой строке $result на echo убрав =.
echo match ()
Еще c выражением match мы можем операторы сравнения. Давайте запишем условие из прошлого урока с тернарным оператором.
$edim = '2 грибочка выросло'; // и запишем условие в котором сравним
$esli = match (true){ // если истина то выводим
$edim >= 3 => ' Да едим', // здесь мы сверяем больше либо равно 3 и если истина, то дальше не идет как в switch, а выводится только этот результат.
$edim <= 3 => ' Ждем пока вырастут еще', // сравниваем так же с 3, но меньше либо равно, иначе при 2 не выведет результат.
default => '', // запишем пустой дефолт чтобы не было ошибки.
};
echo " Если $edim . $esli <p>";
Домашнее задание.
Перепишите (Пример с фруктами.) Используя выражение match
Проверить домашнее задание.