Привет, интересно, можно ли это сделать в случае с коммутатором. Вот пример кода, который я хочу сделать
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: добавлено больше случаев для более четкого вопроса
Для любых переменных, которые содержат одно и то же значение, зачем использовать переключатель вообще? Просто определите эти переменные перед оператором 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");
Поскольку изменение $pic
между двумя случаями зависит от значения $name
, вы можете использовать $name
:
switch($name) {
case "Dog":
case "Cat":
$pic = "/images/" . strtolower($name) . ".jpg";
$info ="four legs";
break;
}