switch и match
switch
switch ($i) {
case 0:
echo "i равно 0";
case 1:
echo "i равно 1";
case 2:
echo "i равно 2";
}
Если $i равно 0, то PHP исполнит все операторы echo! Если $i равно 1, PHP исполнит два последних оператора echo.
Список операторов для исполнения в секции case также может быть пустым, что просто передаёт управление списку операторов в следующей секции case
Специальный вид конструкции case - default. Сюда управление попадает тогда, когда не сработал ни один из других операторов case. Например:
default:
echo "i не равно 0, 1 или 2";
Для более сложных сравнений в качестве значения switch может использоваться значение true.
switch (true) {
case $start - $offset === 1:
print "A";
break;
case $start - $offset === 2:
print "B";
break;
.....
...
Источник: https://www.php.net/manual/ru/control-structures.switch.php
match
match похоже на оператор switch, где исходное значение сравнивается с другими и в случае совпадения возвращается соотсветствующий результат
В отличие от switch, в match используется строгое сравнение (===)
В отличии от switch, match исполняется только одна, первая подошедшая, ветвь кода
$email = "test@test.ru";
$result = match($email){
'egor@test.ru' => "Привет Егор",
'ivan@test.ru' => "Привет Иван",
'test@test.ru' => "Привет test",
};
var_dump($result);
Может использоваться множественное условие, функция, операторы сравнения или условие по умолчанию:
$a = 2;
$b = 3;
$c = 4;
$x = 1;
$result = match($x) {
// Множественное условие:
$a, $b, $c => 1,
// Аналогично трём одиночным:
$a => 2,
$b => 3,
$c => 4,
default => 5,
};
var_dump($result);