如果你听人说过,如果你能用switch替代if elseif的时候,要果断替换。如果你也不喜欢模板引擎进行模板式开发。那么你就应该碰到过这个问题。
<?php switch ($x):?> <?php case 1:?> $x应该是1 <?php break;case 2:?> $x应该是2 <?php endswitch;?>
然后,编辑器就告诉我语法错误。我很诧异。为什么呢?
经提示,发现第一行有错误。说少case/default语句。我尝试如下代码:
<?php switch ($x):case 1:?> $x应该是1 <?php break;case 2:?> $x应该是2 <?php endswitch;?>
然后,就发现编辑器的错误提示没了, 运行,果真没错了~
可,知道没错了, 还不知道啥原因呢啊!继续尝试如下代码:
<?php switch ($x):?><?php case 1:?> $x应该是1 <?php break;case 2:?> $x应该是2 <?php endswitch;?>
无错!那再格式化一下呢?
<?php switch ($x):?> <?php case 1:?> $x应该是1 <?php break;case 2:?> $x应该是2 <?php endswitch;?>
继续报错!原因是啥可能大家都清楚了把。switch语句跟第一个case语句之前是不能有任何输出的。包括换行呀空格呀都不行的。所以,我们认为好看的代码是不正确的。
其实,我是被这个写法骗了。在php代码中, 你可能会这么写:
<?php switch ($x){ //随便有多少空格回车 case 1: echo '$x应该是1'; break; case 2: echo '$x应该是2'; }
因为这是在php标签内,php解释器会忽略语句外的空字符(空格,回车,制表符)。
然后,可以尝试如下错误写法,这跟我犯的错误是一样一样的:
<?php switch ($x){ echo 'rt'; case 1: echo '$x应该是1'; break; case 2: echo '$x应该是2'; }