转到语法在PHP中的应用

  介绍

本篇内容介绍了“goto语法在PHP中的应用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

<节>,

goto语法在PHP中的使用

在c++, Java及很多语言中,都存在着一个神奇的语法,就是goto。顾名思义,它的使用是直接去到某个地方。从来代码的角度来说,也就是直接跳转到指定的地方。我们的PHP中也有这个功能,我们先来看看它是如何使用的:

 <代码> goto; 
回声“1”;//不会输出

:
回声& # 39;2 & # 39;;//2
  ,

代码运行到goto位置时,就跳转到了一个:所在的代码行并继续执行下去。感觉很好玩吧,这个功能对于复杂的嵌套如果或者在一些循环中进行跳出很有用,特别是针对某些异常或者错误情况的处理,比如:

 <代码> (i=0, j=50美元;美元我& lt;100;$ + +){
,,而(j -美元){
,,,,如果(j==17美元){//假设j==17美元是一种异常情况
,,,,,,转到结束;//直接跳走了,循环结束的结果也不输出了
,,,,}

,,}
}
回应“我=$我;
:
回声& # 39;j冲击17 & # 39;;//直接到这里输出或者处理异常情况了
  ,

感觉还不错是吧,不过goto语法也有一些限制情况:

<李> <>节目标位置只能位于同一个文件和作用域,也就是说无法跳出一个函数或类方法,也无法跳入到另一个函数 <李> <节>无法跳入到任何循环或者开关结构中 <李> <节>跳出循环或者开关,通常的用法是用goto代替多层的打破

比如以下的代码都是无效的:

 <代码>=1美元;
goto switchgo;
开关(美元){
,,案例1:
,,,,回声& # 39;bb # 39;;
,
,打破;,例2:
,,,,回声& # 39;cc # 39;;
,,,,switchgo:
,,,,,,呼应“bb"
,,打破;
}

goto whilego;
, ($ & lt;10){
,+ +,美元;
,,whilego:
,,,,回音一美元;
}


//致命错误:& # 39;goto # 39;未定义的标签& # 39;ifgo& # 39;
  ,

它们都会报同样的错误,因为作用域的关系无法找到定义的goto标签。另外还需要注意的,使用goto可能什么引起死循环,如下所示:

 <代码> b: 
,,回声& # 39;b # 39;;

goto b;
  ,

代码执行到goto时,跳回了之前的b标签行,然后继续向下执行,又到转向了,成为了一个死循环。有点像,(真正的)的感觉了。但是,在这个goto循环里是没有打破的,只能在goto出去到别的地方。

所以,转到这个语法的使用非常少,因为它会扰乱你的代码逻辑流程,但喜欢它的人又会感觉到可以让代码非常地灵活多变。这就要仁者见仁智者见智的进行选择了,目前大多数语言的文档中都并不是很提倡使用这个语法,包括PHP。我的建议是,如果不是非常特殊的情况或者是为了炫技,尽量不要使用goto语法,当项目代码复杂起来后,很容易让别人或者自己看懵。

测试代码:https://github.com/zhangyue0503/dev-blog/blob/master/php/201911/goto%E8%AF%AD%E6%B3%95%E5%9C%A8PHP%E4%B8%AD%E7%9A%84%E4%BD%BF%E7%94%A8.md

参考文档:https://www.php.net/manual/zh/control-structures.goto.php

转到语法在PHP中的应用