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中使用Oracle数据库(2)
Oct 09 PHP
php Memcache 中实现消息队列
Nov 24 PHP
PHP正则提取不包含指定网址的图片地址的例子
Apr 21 PHP
PHP实例分享判断客户端是否使用代理服务器及其匿名级别
Jun 04 PHP
PHP中round()函数对浮点数进行四舍五入的方法
Nov 19 PHP
php通过session防url攻击方法
Dec 10 PHP
thinkphp3.x中变量的获取和过滤方法详解
May 20 PHP
PHP模块化安装教程
Jun 01 PHP
PHP入门教程之上传文件实例详解
Sep 11 PHP
PHP那些琐碎的知识点(整理)
May 20 PHP
PHP中递归的实现实例详解
Nov 14 PHP
PHP PDOStatement::nextRowset讲解
Feb 01 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与SQL注入攻击[二]
2007/04/17 PHP
php+mysqli实现批量替换数据库表前缀的方法
2014/12/29 PHP
Php-Redis安装测试笔记
2015/03/05 PHP
PHP 读取大文件并显示的简单实例(推荐)
2016/08/12 PHP
thinkphp3.2中实现phpexcel导出带生成图片示例
2017/02/14 PHP
PHP实现的策略模式示例
2019/03/20 PHP
Laravel框架实现多个视图共享相同数据的方法详解
2019/07/09 PHP
破除网页鼠标右键被禁用的绝招大全
2006/12/27 Javascript
encode脚本和normal脚本混用的问题与解决方法
2007/03/08 Javascript
JQUBAR1.1 jQuery 柱状图插件发布
2010/11/28 Javascript
javascript数字数组去重复项的实现代码
2010/12/30 Javascript
25个好玩的JavaScript小游戏分享
2011/04/22 Javascript
Javascript的getYear、getFullYear、getUTCFullYear异同分享
2011/11/30 Javascript
FireBug 调试JS入门教程 如何调试JS
2013/12/23 Javascript
基于JavaScript代码实现微信扫一扫下载APP
2015/12/30 Javascript
前端html中jQuery实现对文本的搜索功能并把搜索相关内容显示出来
2017/11/14 jQuery
JS事件绑定的常用方式实例总结
2019/03/02 Javascript
Vue中使用matomo进行访问流量统计的实现
2019/11/05 Javascript
原生js实现自定义滚动条组件
2021/01/20 Javascript
Python HTMLParser模块解析html获取url实例
2015/04/08 Python
分享Python开发中要注意的十个小贴士
2016/08/30 Python
python 创建一个空dataframe 然后添加行数据的实例
2018/06/07 Python
对Tensorflow中的矩阵运算函数详解
2018/07/27 Python
pandas把所有大于0的数设置为1的方法
2019/01/26 Python
详解python执行shell脚本创建用户及相关操作
2019/04/11 Python
简单了解python中对象的取反运算符
2019/07/01 Python
Python输出指定字符串的方法
2020/02/06 Python
Python GUI库PyQt5图形和特效样式QSS介绍
2020/02/25 Python
html5使用canvas绘制一张图片
2014/12/15 HTML / CSS
全球酒店预订网站:Hotels.com
2016/08/10 全球购物
Expedia韩国官网:亚洲发展最快的在线旅游门户网站
2018/02/26 全球购物
应届生面试求职信
2014/07/02 职场文书
2014入党积极分子破除“四风”思想汇报
2014/09/14 职场文书
承诺书范本大全
2015/05/04 职场文书
MySQL优化之慢日志查询
2022/06/10 MySQL
JS实现刷新网页后之前浏览位置保持不变示例详解
2022/08/14 Javascript