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 相关文章推荐
wordpress之wp-settings.php
Aug 17 PHP
php下使用iconv需要注意的问题
Nov 20 PHP
php生成zip压缩文件的方法详解
Jun 09 PHP
使用php检测用户当前使用的浏览器是否为IE浏览器
Dec 03 PHP
一个PHP二维数组排序的函数分享
Jan 17 PHP
php生成验证码,缩略图及水印图的类分享
Apr 07 PHP
php获取flash尺寸详细数据的方法
Nov 12 PHP
PHP 进度条函数的简单实例
Sep 19 PHP
PHP实现上传图片到数据库并显示输出的方法
May 31 PHP
Laravel框架路由设置与使用示例
Jun 12 PHP
Laravel框架表单验证操作实例分析
Sep 30 PHP
php双向队列实例讲解
Nov 17 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
用PHP和ACCESS写聊天室(十)
2006/10/09 PHP
php产生随机数的两种方法实例代码 输出随机IP
2011/04/08 PHP
php array_walk 对数组中的每个元素应用用户自定义函数详解
2016/11/18 PHP
PHP基于SPL实现的迭代器模式示例
2018/04/22 PHP
thinkphp5.1框架实现格式化mysql时间戳为日期的方式小结
2019/10/10 PHP
laravel框架的安装与路由实例分析
2019/10/11 PHP
JavaScript进阶教程(第四课第一部分)
2007/04/05 Javascript
jQuery 行级解析读取XML文件(附源码)
2009/10/12 Javascript
jquery实现弹出div,始终显示在屏幕正中间的简单实例
2014/03/08 Javascript
ECMAScript5(ES5)中bind方法使用小结
2015/05/07 Javascript
JavaScript function函数种类详解
2016/02/22 Javascript
JavaScript中的闭包
2016/02/24 Javascript
javascript使用Promise对象实现异步编程
2016/03/01 Javascript
总结Javascript中的隐式类型转换
2016/08/24 Javascript
AngularGauge 属性解析详解
2016/09/06 Javascript
Angular下H5上传图片的方法(可多张上传)
2017/01/09 Javascript
jQuery插件echarts实现的去掉X轴、Y轴和网格线效果示例【附demo源码下载】
2017/03/04 Javascript
vuex中遇到的坑,vuex数据改变,组件中页面不渲染操作
2020/11/16 Javascript
[03:08]Ti4观战指南上
2014/07/07 DOTA
python的re模块应用实例
2014/09/26 Python
python中threading超线程用法实例分析
2015/05/16 Python
python中文分词,使用结巴分词对python进行分词(实例讲解)
2017/11/14 Python
PyQt Qt Designer工具的布局管理详解
2019/08/07 Python
Python 3.6打包成EXE可执行程序的实现
2019/10/18 Python
Python实现图片查找轮廓、多边形拟合、最小外接矩形代码
2020/07/14 Python
基于Pytorch版yolov5的滑块验证码破解思路详解
2021/02/25 Python
美国一家主营日韩美妆护肤品的在线商店:iMomoko
2016/09/11 全球购物
校园门卫岗位职责
2013/12/09 职场文书
高中家长寄语
2014/04/02 职场文书
社区文艺活动方案
2014/08/19 职场文书
歌剧魅影观后感
2015/06/05 职场文书
单位提档介绍信
2015/10/22 职场文书
严以用权学习心得体会
2016/01/12 职场文书
《金色的草地》教学反思
2016/02/17 职场文书
PHP中多字节字符串操作实例详解
2021/08/23 PHP
MySQL数据库查询之多表查询总结
2022/08/05 MySQL