如何将多个值返回给Switch?

时间:2014-06-05 11:29:41

标签: php switch-statement categories categorization

如何在PHP中使用switch返回多个值?

在下面的示例中,我尝试为 product1 返回 category1,category2,category3 ,但使用switch语句下方的代码只返回一个值。

switch ($product) {
    case "product1":
        $category = "category1";
        break;
    case "product1":
    case "product2":
        $category = "category2";
        break;
    case "product1":
    case "product2":
    case "product3":
        $category = "category3";
        break;
}

有没有办法向$category添加多个值?我希望用逗号分隔值,这样我以后就可以将它们用作标记。

2 个答案:

答案 0 :(得分:2)

如果要返回多个值,则应使用数组。

// We're going to store or multiple categories into an array.
$categories = array();
switch ($product) {
    case "product1":
        $categories[] = "category1";
        // This case label doesn't have a break statement, and thus it 'falls through'
        // to the next case label, which is "product2". That code block will also be
        // executed.
    case "product2":
        $categories[] = "category2"
    case "product3":
        $categories[] = "category3";
}

此代码段忽略了案例代码块末尾的break,因此它使用switch case fallthrough:如果$product == "product1",则会执行匹配的案例标签,但是&#39穿过'标签product2,也将被执行,等等。

如果$product == "product1",则$category是一个值为category1category2category3的数组。

然后你可以连接数组中的字符串,用逗号分隔,如下所示:

echo implode(",", $categories);

注意:有时候,使用案例会很有用,但是请注意,它很容易出错。如果您的目标是预期的,那么强烈建议您添加注释以通知其他程序员这是有意的。否则,他们可能会认为您不小心忘记了break声明。

答案 1 :(得分:0)

你可以通过以下方式完成。

$category = array();
switch($product)
{

case "product1":
  $category[] = "category1";

case "product2":
  $category[] = "category2";

case "product3":
  $category[] = "category3";
}
return implode(',',$category);

通过附加字符串并删除break语句,您可以检查switch中的所有可能情况。