PHP允许在switch语句中使用无效代码
发布时间:2020-12-13 13:34:13 所属栏目:PHP教程 来源:网络整理
导读:我在理解为什么以下不会导致5.3.3中的编译器错误(在我的同事5.2.5上正确出错)时遇到一些麻烦: ?php echo "startingn"; switch(1) { case 2: echo "twon"; break; defalut: // note the misspelling echo "deflautn"; } echo "endingn"; 它不是给我一个
我在理解为什么以下不会导致5.3.3中的编译器错误(在我的同事5.2.5上正确出错)时遇到一些麻烦:
<?php echo "startingn"; switch(1) { case 2: echo "twon"; break; defalut: // note the misspelling echo "deflautn"; } echo "endingn"; 它不是给我一个编译器错误(甚至是一个警告),而是给出了这个: starting ending 但是,如果我在if语句中使用它,它会给我我期望的内容: <?php if (1 == deflaut) echo "deflaut2n"; 得到: PHP Notice: Use of undefined constant deflaut - assumed 'deflaut' in ... 为什么是这样?我可以禁用一个设置,告诉它对这类事情要严格吗?
问题是您的代码没有按照您的想法进行.案例块仅在下一个案例块发生时,或者在找到默认:或达到结束时结束.这意味着defalut是案例2:block的一部分.所以它甚至从未被解释过.
但是,它甚至不会触发语法错误(即使你执行switch(2)也不会.这是因为 (实际上,它不能,因为限制开关块内的目标以避免无限循环,但这应该说明这一点……) 当找到您期望的错误时,您可以通过执行案例defalut强制执行错误. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |