-1

1

switch($app_id){
    case (
        $app_id == 1 || 
        $app_id == 2
    ):
        //do something
    break;
    case 3:
        //do something else
    break;
}

2

switch($app_id){
    case 1:
    case 2: 
        //do something
    break;
    case 3:
        //do something else
    break;
}

除了礼仪之外,还有更好的理由为什么你不会做第二件事还是完全取决于你?

我问的原因是因为在 php.net 中它说你不应该做后者,无论你是否愿意(来自 php.net 的片段说你不应该不间断地做案例,无论你是否想堆叠查询或不是)

<?php
switch ($i) {
case 0:
    echo "i equals 0";
case 1:
    echo "i equals 1";
case 2:
    echo "i equals 2";
}
?>

在这里,如果 $i 等于 0,PHP 将执行所有的 echo 语句!如果 $i 等于 1,PHP 将执行最后两个 echo 语句。仅当 $i 等于 2 时,您才会得到预期的行为(将显示“i 等于 2”)。因此,重要的是不要忘记 break 语句(即使在某些情况下您可能希望避免故意提供​​它们)。

到目前为止的原因:

  1. 回答:如果我省略了一个休息时间以允许跌倒,我会发表评论说发生了跌倒,这样下一个出现的人就不会“啊哈!错过休息!繁荣”-马克 B

    我的评论:很好的理由马克!那是礼仪的流浪汉。如果你打破它,人们还没有准备好被他们的队长正确性所欺骗。

  2. 答案: @JamesT:您所读到的内容只会警告您不要错误地忘记它,因为这是一个非常常见的编程错误。如果它是有意的,你可以这样做。——宇智波斑

    我的评论:我认为礼仪赢得了这个问题。一定要插入中断,因为它可能会让下一个编辑你的代码的人感到困惑;唉,如果你足够明智地发表评论来解释你打算错过它,那就去做吧

  3. 回答:你错过了理解他们的情绪。他们正在谈论在每种情况下都有单独的操作时省略休息,例如我的第一个示例。如果在案例之间完全共享操作,则对案例进行分组,例如示例一中的 4 和 5 是非常好的和鼓励的。– 罗科德

    我的评论:我同意这句话可能被误读。除了让未来的开发人员质疑你是否有意离开突破之外,我认为没有任何理由。

4

2 回答 2

1

好吧,您的第一个示例可能不会按照您的预期行事。

switch($app_id){
    case (
        $app_id == 1 || 
        $app_id == 3
    ):
        //do something
    case 3:
        //do something else
    break;
}

这将评估条件并解析为TRUEorFALSE值,然后将其与$app_id. 在这种(非常具体的)情况下,您会得到预期的结果,但这不是正确的方法!.

使用开关盒时,您展示的第二种方法更好。


break 语句用于在满足条件后退出案例。您可以忽略它,并执行所有后续案例。如果这是预期的行为,那么以这种方式实现它是非常好的。不要忘记添加评论以澄清它。善待未来的你!

于 2012-11-20T16:44:51.133 回答
0

下面的开关是一样的if($i == 1 || $i == 2 || $i == 3)

switch($i) {
  case 1:
    echo "1";
  case 2:
    echo "2";
  case 3:
    echo "3";
    break;
}

假设 $i == 1,上面的代码实际上会输出“123”——这通常是不正确的。

正确的例子:

if ($i == 1) // Do something
else if ($i == 2) // Do something else, etc

是相同的

switch(i) {
  case 1:
    echo "1";
    break;
  case 2:
    echo "1";
    break;

  case 4:
  case 5:
    echo "This is 4 and 5";
    break;
}

上面的代码只会为 $i == 1 输出“1”

有些人确实将他们的案例包含在 {} 中,但这纯粹是为了便于阅读,不会强制中断。

关于您的示例case (4 || 5)- 这将导致语法错误。

于 2012-11-20T16:44:32.997 回答