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 相关文章推荐
PHP4在Windows2000下的安装
Oct 09 PHP
PHP 5.3 下载时 VC9、VC6、Thread Safe、Non Thread Safe的区别分析
Mar 28 PHP
PHP中PDO基础教程 入门级
Sep 04 PHP
PHP学习笔记 IIS7下安装配置php环境
Oct 29 PHP
探讨Smarty中如何获取数组的长度以及smarty调用php函数的详解
Jun 20 PHP
完美解决PHP中的Cannot modify header information 问题
Aug 12 PHP
php+ajax实现无刷新分页的方法
Nov 04 PHP
PHP输出九九乘法表代码实例
Mar 27 PHP
Ubuntu下安装PHP的mongodb扩展操作命令
Jul 04 PHP
8个必备的PHP功能开发
Oct 02 PHP
PHP读MYSQL中文乱码的快速解决方法
Oct 01 PHP
PHP常用函数总结(180多个)
Dec 25 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中长文章分页显示实现代码
2012/09/29 PHP
CURL状态码列表(详细)
2013/06/27 PHP
浅谈PHP中output_buffering
2015/07/13 PHP
PHP程序员简单的开展服务治理架构操作详解(二)
2020/05/14 PHP
jquery DOM操作 基于命令改变页面
2010/05/06 Javascript
js中通过split函数分割字符串成数组小例子
2013/09/21 Javascript
javascript中attachEvent用法实例分析
2015/05/14 Javascript
基于touch.js手势库+zepto.js插件开发图片查看器(滑动、缩放、双击缩放)
2016/11/17 Javascript
Javascript实现倒计时(防页面刷新)实例
2016/12/13 Javascript
javascript表达式和运算符详解
2017/02/07 Javascript
详解JS异步加载的三种方式
2017/03/07 Javascript
JS实现定时任务每隔N秒请求后台setInterval定时和ajax请求问题
2017/10/15 Javascript
修改UA在PC中访问只能在微信中打开的链接方法
2017/11/27 Javascript
Vue.directive()的用法和实例详解
2018/03/04 Javascript
Vue.js 中 axios 跨域访问错误问题及解决方法
2018/11/21 Javascript
记录一次开发微信网页分享的步骤
2019/05/07 Javascript
JS 数组和对象的深拷贝操作示例
2020/06/06 Javascript
微信小程序获取当前时间及星期几的实例代码
2020/09/20 Javascript
[46:50]Liquid vs Mineski 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
[00:37]食人魔魔法师轮盘吉兆顺应全新至宝将拥有额外款式
2019/12/19 DOTA
Python用GET方法上传文件
2015/03/10 Python
使用Turtle画正螺旋线的方法
2017/09/22 Python
基于Python中numpy数组的合并实例讲解
2018/04/04 Python
Python传递参数的多种方式(小结)
2019/09/18 Python
40个你可能不知道的Python技巧附代码
2020/01/29 Python
详解css position 5种不同的值的用法
2019/07/30 HTML / CSS
HTML5中meta属性的使用方法
2016/02/29 HTML / CSS
html5拖拽应用记录及注意点
2020/05/27 HTML / CSS
世界上最大的在线学习和教学市场:Udemy
2017/11/08 全球购物
前台接待岗位职责
2013/12/03 职场文书
生日宴会答谢词
2014/01/09 职场文书
小学教师听课制度
2014/02/01 职场文书
入党积极分子培养联系人意见
2015/08/12 职场文书
《天使的翅膀》读后感3篇
2019/12/20 职场文书
python使用XPath解析数据爬取起点小说网数据
2021/04/22 Python
三星 3nm 芯片将于第二季度开始量产
2022/04/29 数码科技