Задать вопрос
weranda
@weranda

Можно ли как-то в switch запихнуть две переменных?

Приветствую.

Есть известная конструкция:
switch ($i) {
    case 0:
        echo "i equals 0";
        break;
    case 1:
        echo "i equals 1";
        break;
    case 2:
        echo "i equals 2";
        break;
}


Есть ли вариант какой-либо добавления в switch дополнительной переменной для проверки в case?
  • Вопрос задан
  • 188 просмотров
Подписаться 1 Простой 2 комментария
Пригласить эксперта
Ответы на вопрос 3
@Barmunk
к примеру
switch ([$color, $size]) {
    case ['blue', 'small']:
        echo 'blue and small';
    break;

    case ['red', 'large'];
        echo 'red and large';
    break;
}


или даже так, но тут уже лучше сделать if чем switch
switch(true) {
      case ($color == 'blue' and $size == 'small'):
        echo "blue and small";
        break;
      case ($color == 'red' and $size == 'large'):
        echo "red and large";
        break;
      default:
        echo 'nothing';
        break;
 }
Ответ написан
nokimaro
@nokimaro
Меня невозможно остановить, если я смогу начать.
Более короткий вариант с использованием match() вместо switch()

$i = 1; $k = 2;

$result = match(true) {
    ($i == 0 && $k == 1) => "i equals 0, k = 1",
    ($i == 1 && $k == 2) => "i equals 1, k = 2",
    default              => "",
};

echo $result;
Ответ написан
Комментировать
@AUser0
Чем больше знаю, тем лучше понимаю, как мало знаю.
Ещё вариант:
switch ("{$i}:{$j}") {
    case "0:1":
        echo "i=0, j=1";
        break;
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы