如何在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
添加多个值?我希望用逗号分隔值,这样我以后就可以将它们用作标记。
答案 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
是一个值为category1
,category2
和category3
的数组。
然后你可以连接数组中的字符串,用逗号分隔,如下所示:
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中的所有可能情况。