PHP:默认情况下的断开开关?

PHP:默认情况下的断开开关?,php,switch-statement,case,break,Php,Switch Statement,Case,Break,我见过一些人在默认情况下使用break。由于默认案例是触发时执行的最后一个案例,因此是否需要在此中断?我猜这只是出于惯例,还是有其他原因?只要switch语句末尾有默认值,就没有理由需要它。请注意,默认值不必是最后一种情况: 我曾经问过一个同样的问题。有趣的是这里有人问它:)来吧,没有它会很难看:)@inhan很高兴听到我不是唯一一个。:)看看你的例子,我可以理解为什么当你没有默认值时,人们会倾向于在常规case语句中添加中断。如果您以后决定在代码中添加更多案例,那么这将减少犯错误和忘记添加中断

我见过一些人在默认情况下使用break。由于默认案例是触发时执行的最后一个案例,因此是否需要在此中断?我猜这只是出于惯例,还是有其他原因?

只要switch语句末尾有默认值,就没有理由需要它。请注意,默认值不必是最后一种情况:


我曾经问过一个同样的问题。有趣的是这里有人问它:)来吧,没有它会很难看:)@inhan很高兴听到我不是唯一一个。:)看看你的例子,我可以理解为什么当你没有默认值时,人们会倾向于在常规case语句中添加中断。如果您以后决定在代码中添加更多案例,那么这将减少犯错误和忘记添加中断的可能性。但是,对于默认情况,您将永远不会有多个,这通常是交换机上的最后一个情况。我不认为交换机情况会被任何机制重新排序,因此默认情况也可以作为第一个情况使用。但是是的,你可能不能有超过1个。否则,它可能跳过后面的(如果你在同一个开关条件下有多个缺省情况),我会认为把一个默认的地方放到一个开关的末尾是一个非常糟糕的做法。因为,正如PHP手册中所说:“switch语句逐行执行(实际上是逐语句执行)。在开始时,不执行任何代码。只有当发现case语句的值与switch表达式的值匹配时,PHP才会开始执行这些语句。PHP将继续执行这些语句,直到switch块结束或第一次看到break语句为止。”因此,违约后的任何案例都是误导性的。这是一条代价高昂的代码:“为什么在没有任何评论解释这种偏离常规的情况下,违约会出现在第一个位置”。不过,这是完全正确的:)从透视角度来说,知道break也可以用来“中断”if或循环是件好事。@HerbertVan Vliet不是if块,而是它。
switch ($var) {
    case 0:
        // Do something...
        break;
    case 1:
        // Do something...
        break;
    default:
        // Do something...
        break;
}
<?php
$var = 4;
switch($var)
{
    default:
        echo "default";
        break;
    case 4:
        echo "this will be executed";
        break;
}