加入收藏 | 设为首页 | 会员中心 | 我要投稿 云计算网_泰州站长网 (http://www.0523zz.com/)- 视觉智能、AI应用、CDN、行业物联网、智能数字人!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

畅聊PHP中goto语法的用法

发布时间:2022-07-16 15:09:45 所属栏目:PHP教程 来源:互联网
导读:PHP中goto语法的用法 在C++、Java及很多语言中,都存在着一个神奇的语法,就是goto。顾名思义,它的使用是直接去到某个地方。从来代码的角度来说,也就是直接跳转到指定的地方。我们的PHP中也有这个功能,我们先来看看它是如何使用的: goto a; echo 1; //
  PHP中goto语法的用法
  在C++、Java及很多语言中,都存在着一个神奇的语法,就是goto。顾名思义,它的使用是直接去到某个地方。从来代码的角度来说,也就是直接跳转到指定的地方。我们的PHP中也有这个功能,我们先来看看它是如何使用的:
 
  
  goto a;
 
  echo "1"; // 不会输出
 
 
  echo '2'; // 2
 
  代码运行到goto位置时,就跳转到了a:所在的代码行并继续执行下去。感觉很好玩吧,这个功能对于复杂的嵌套if或者在一些循环中进行跳出很有用,特别是针对某些异常或者错误情况的处理,比如:
 
  
  for ($i = 0, $j = 50; $i < 100; $i++) {
 
      while ($j--) {
 
          if ($j == 17) { // 假设$j==17是一种异常情况
 
 
  end:
 
  echo 'j hit 17'; // 直接到这里输出或者处理异常情况了
 
  感觉还不错是吧,不过goto语法也有一些限制情况:
 
  目标位置只能位于同一个文件和作用域,也就是说无法跳出一个函数或类方法,也无法跳入到另一个函数
  无法跳入到任何循环或者 switch 结构中
  跳出循环或者 switch,通常的用法是用 goto 代替多层的 break
  比如以下的代码都是无效的:
 
   $a = 1;
 
  goto switchgo;
 
  switch ($a){
 
      case 1:
 
          echo 'bb';
 
      break;
 
      case 2:
 
          echo 'cc';
 
          switchgo:
 
              echo "bb";
 
      break;
 
  
  // Fatal error: 'goto' to undefined label 'ifgo'
 
  它们都会报同样的错误,因为作用域的关系无法找到定义的goto标签。另外还需要注意的,使用goto可能什么引起死循环,如下所示:
 
 
  所以,goto这个语法的使用非常少,因为它会扰乱你的代码逻辑流程,但喜欢它的人又会感觉到可以让代码非常地灵活多变。这就要仁者见仁智者见智的进行选择了,目前大多数语言的文档中都并不是很提倡使用这个语法,包括PHP。我的建议是,如果不是非常特殊的情况或者是为了炫技,尽量不要使用goto语法,当项目代码复杂起来后,很容易让别人或者自己看懵。

(编辑:云计算网_泰州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读