php switch case里面80%php程序员不知道的秘密

先给大家列一段代码:

$i = 0;
switch ($i) {
    case 0;
        echo "i equals 0";
    case 1:
        echo "i equals 1";
    case 2:
        echo "i equals 2";
}

这个是php官方手册的代码,请问大家,最后结果是什么?

i equals 0i equals 1i equals 2

上面就是执行的结果。

你可能会疑问?

官方解释是这样的。

为避免错误,理解 switch 是怎样执行的非常重要。switch 语句一行接一行地执行(实际上是语句接语句)。开始时没有代码被执行。 仅当一个 case 语句中的值和 switch 表达式的值匹配时 PHP 才开始执行语句,直到 switch 的程序段结束或者遇到第一个 break 语句为止。如果不在 case 的语句段最后写上 break 的话,PHP 将继续执行下一个 case 中的语句段。

php官方介绍:http://www.php.net/manual/zh/control-structures.switch.php

w3c官方介绍:http://www.w3school.com.cn/php/php_switch.asp

工作原理:

  • 对表达式(通常是变量)进行一次计算
  • 把表达式的值与结构中 case 的值进行比较
  • 如果存在匹配,则执行与 case 关联的代码
  • 代码执行后,break 语句阻止代码跳入下一个 case 中继续执行
  • 如果没有 case 为真,则使用 default 语句
本文已经被查看479次

发表评论

电子邮件地址不会被公开。 必填项已用*标注