goto语法在PHP中的使用教程


Posted in PHP onSeptember 17, 2020

前言

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

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

for ($i = 0, $j = 50; $i < 100; $i++) {
 while ($j--) {
  if ($j == 17) { // 假设$j==17是一种异常情况
   goto end; // 直接跳走了,循环结束的结果也不输出了
  }

 }
}
echo "i = $i";
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;
}

goto whilego;
while($a < 10){
 $a++;
 whilego:
  echo $a;
}

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

b:
 echo 'b';

goto b;

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

注意:goto 操作符仅在 PHP 5.3及以上版本有效。

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

总结

到此这篇关于goto语法在PHP中使用教程的文章就介绍到这了,更多相关goto语法在PHP的使用内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

PHP 相关文章推荐
学习php笔记 字符串处理
Oct 19 PHP
基于php-fpm的配置详解
Jun 03 PHP
php判断类是否存在函数class_exists用法分析
Nov 14 PHP
PHP工程师VIM配置分享
Dec 15 PHP
详解WordPress中过滤链接与过滤SQL语句的方法
Dec 18 PHP
分享php多功能图片处理类
May 15 PHP
php实现遍历文件夹的方法汇总
Mar 02 PHP
YII中Ueditor富文本编辑器文件和图片上传的配置图文教程
Mar 15 PHP
PHP实现QQ登录的开原理和实现过程
Feb 04 PHP
php实现算术验证码功能
Dec 05 PHP
php精度计算的问题解析
Jun 21 PHP
Yii框架 session 数据库存储操作方法示例
Nov 18 PHP
详解使用php-cs-fixer格式化代码
Sep 16 #PHP
PHP 图片处理
Sep 16 #PHP
laravel入门知识点整理
Sep 15 #PHP
分享几种好用的PHP自定义加密函数(可逆/不可逆)
Sep 15 #PHP
PhpStorm+xdebug+postman调试技巧分享
Sep 15 #PHP
laravel中Redis队列监听中断的分析
Sep 14 #PHP
PHP实现限制域名访问的实现代码(本地验证)
Sep 13 #PHP
You might like
检测png图片是否完整的php代码
2010/09/06 PHP
PHP循环语句笔记(foreach,list)
2011/11/29 PHP
ASP.NET jQuery 实例11 通过使用jQuery validation插件简单实现用户登录页面验证功能
2012/02/03 Javascript
IE中getElementsByName()对有些元素无效的解决方案
2014/09/28 Javascript
生成二维码方法汇总
2014/12/26 Javascript
C++中的string类的用法小结
2015/08/07 Javascript
详解JavaScript中常用的函数类型
2015/11/18 Javascript
jQuery插件Flexslider实现图片轮播、图文结合滑动切换效果
2020/04/16 Javascript
vue2.0 keep-alive最佳实践
2017/07/06 Javascript
webpack构建的详细流程探底
2018/01/08 Javascript
浅谈在vue中用webpack打包之后运行文件的问题以及相关配置方法
2018/02/21 Javascript
关于Mac下安装nodejs、npm和cnpm的教程
2018/04/11 NodeJs
vue地区选择组件教程详解
2018/05/04 Javascript
vue2.0+vuex+localStorage代办事项应用实现详解
2018/05/31 Javascript
react native 获取地理位置的方法示例
2018/08/28 Javascript
vuejs实现折叠面板展开收缩动画效果
2018/09/06 Javascript
windows实现npm和cnpm安装步骤
2019/10/24 Javascript
vue实现列表拖拽排序的功能
2020/11/02 Javascript
Element-ui 自带的两种远程搜索(模糊查询)用法讲解
2021/01/29 Javascript
[02:34]DOTA2亚洲邀请赛 BG战队出场宣传片
2015/03/09 DOTA
python进阶教程之动态类型详解
2014/08/30 Python
详解Python中的多线程编程
2015/04/09 Python
如何利用Fabric自动化你的任务
2016/10/20 Python
Python算法应用实战之队列详解
2017/02/04 Python
Python搭建HTTP服务器和FTP服务器
2017/03/09 Python
python 地图经纬度转换、纠偏的实例代码
2018/08/06 Python
python多项式拟合之np.polyfit 和 np.polyld详解
2020/02/18 Python
Python求凸包及多边形面积教程
2020/04/12 Python
自动化职业生涯规划书范文
2014/01/03 职场文书
办加油卡单位介绍信
2014/01/09 职场文书
音乐教育感言
2014/03/05 职场文书
董事长秘书工作职责
2014/06/10 职场文书
劳模先进事迹材料
2014/12/24 职场文书
2015年建筑工作总结报告
2015/05/04 职场文书
2015年学校政教工作总结
2015/07/20 职场文书
详解NumPy中的线性关系与数据修剪压缩
2022/05/25 Python