SWITCH语句两种情况相同且条件不同的情况

时间:2015-11-14 00:26:36

标签: php switch-statement

嗨,我想知道这是否可以在开关盒中完成。这是我想做的示例代码

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。

编辑:狗的$ pic不是“/images/dog.jpg”;

EDIT2:增加了更多案例以提出更明确的问题

2 个答案:

答案 0 :(得分:2)

由于$pic在两种情况之间的变化取决于$name的值,因此您可以使用$name本身:

switch($name) {
    case "Dog":
    case "Cat":
        $pic = "/images/" . strtolower($name) . ".jpg";
        $info ="four legs";
        break;
}

答案 1 :(得分:2)

对于包含相同值的任何变量,为什么要使用开关?只需在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");