PHP允许在switch语句中使用无效代码

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了PHP允许在switch语句中使用无效代码脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
我在理解为什么以下不会导致5.3.3中的编译器错误(在我的同事5.2.5上正确出错)时遇到一些麻烦: @H_502_1@<?PHP echo "starting\n"; swITch(1) { case 2: echo "two\n"; break; defalut: // note the missPElling echo "deflaut\n"; } echo "ending\n";@H_403_2@

它不是给我一个编译器错误(甚至是一个警告),而是给出了这个:

@H_502_1@starting ending@H_403_2@

但是,如果我在if语句中使用它,它会给我我期望的内容

@H_502_1@<?PHP if (1 == deflaut) echo "deflaut2\n";@H_403_2@

得到:

@H_502_1@PHP Notice: Use of undefined constant deflaut - assumed 'deflaut' in ...@H_403_2@

为什么是这样?我可以禁用一个设置,告诉它对这类事情要严格吗?

@H_777_12@ 问题是您的代码没有按照您的想法进行.案例块仅在下一个案例块发生时,或者在找到认:或达到结束时结束.这意味着defalut是案例2:block的一部分.所以它甚至从未被解释过.

但是,它甚至不会触发语法错误(即使你执行switch(2)也不会.这是因为goto运算符是在PHP 5.3中引入的.语法词:在PHP语句的开头现在是一个可访问的目标通过转到.所以转到defalut;可以用来转到标签.

(实际上,它不能,因为限制开关块内的目标以避免无限循环,但这应该说明这一点……)

当找到您期望的错误时,您可以通过执行案例defalut强制执行错误.

脚本宝典总结

以上是脚本宝典为你收集整理的PHP允许在switch语句中使用无效代码全部内容,希望文章能够帮你解决PHP允许在switch语句中使用无效代码所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。