SWITCH-оператор двух корпусов с одинаковым условием, а также с другим условием

1

Привет, интересно, можно ли это сделать в случае с коммутатором. Вот пример кода, который я хочу сделать

switch($name)
case "Dog":
    $pic = "/images/itscute.jpg";
    $info ="four legs";
    break;
case "Cat":
    $pic = "/images/cat.jpg";
    $info ="four legs";
    break;
case "bird":
    $pic = "/images/bird.jpg";
    $info = "two legs";
    break;

Теперь вы можете видеть, что и собака, и кошка имеют одинаковое значение $ info. Возможно ли, чтобы я сделал $ info только для обоих из них, как это

switch($name)
case "Dog":
case "Cat":
    $info ="four legs";
    break;
case "bird":
    $info = "two legs";
    break;

то снова я не знаю, как разместить $ pic, если код такой.

EDIT: $ pic у собаки не "/images/dog.jpg";

EDIT2: добавлено больше случаев для более четкого вопроса

  • 0
    Какой язык? Это должно быть добавлено в качестве тега.
  • 0
    Добавлено .. извините, я думал, что это не нужно, потому что я думаю, что большинство языков имеют тот же переключатель
Показать ещё 2 комментария
Теги:
switch-statement

2 ответа

1
Лучший ответ

Для любых переменных, которые содержат одно и то же значение, зачем использовать переключатель вообще? Просто определите эти переменные перед оператором switch. Используйте оператор switch только для переменных, которые содержат разные значения.

РЕДАКТИРОВАТЬ

В этом случае нет причин, по которым вы не можете использовать 2 оператора switch, например:

switch(strtolower($name))
{
case "dog":
    $pic = "/images/itscute.jpg";
    break;
case "cat":
    $pic = "/images/cat.jpg";
    break;
case "bird":
    $pic = "/images/bird.jpg";
    break;
}
switch(strtolower($name))
{
case "dog":
case "cat":
    $info = "four legs";
    break;
case "bird":
    $info = "two legs";
    break;
}

Я рекомендую вам использовать strtolower(), как показано в моем примере, чтобы избежать каких-либо проблем. Вы можете использовать любое количество операторов switch, сколько вам нужно. Что касается превращения "собака" в "Собака", просто добавьте "" к переменной, например: $name = ucwords($name. "'s");

  • 0
    на самом деле реальный код гораздо сложнее, чем этот, и я не знаю, как это объяснить просто. Там 4 случая. 2 из них имеют одинаковую переменную с одинаковым значением, но также с одинаковой переменной и разным значением. В другом 2 случае значение совершенно другое, но переменная все та же. И наконец, мне нужно использовать эти переменные в одном предложении. Так что, если речь идет о собаке, предложение показывает собаку.
  • 0
    посмотрите на мои правки
Показать ещё 3 комментария
1

Поскольку изменение $pic между двумя случаями зависит от значения $name, вы можете использовать $name:

switch($name) {
    case "Dog":
    case "Cat":
        $pic = "/images/" . strtolower($name) . ".jpg";
        $info ="four legs";
        break;
}
  • 0
    да, сначала я так думал, но что если это похоже на мой отредактированный код? Извините, только что понял, что я дал неправильный пример хехехе: D
  • 0
    посмотрите на nmy edit @ hjpotter92

Ещё вопросы

Сообщество Overcoder
Наверх
Меню