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 cookie 作用范围?不要在当前页面使用你的cookie
Mar 24 PHP
基于php 随机数的深入理解
Jun 05 PHP
有关于PHP中常见数据类型的汇总分享
Jan 06 PHP
php生成RSS订阅的方法
Feb 13 PHP
PHP生成静态HTML页面最简单方法示例
Apr 09 PHP
Laravel 5框架学习之Eloquent 关系
Apr 09 PHP
thinkphp分页实现效果
Oct 13 PHP
PHP面向对象程序设计方法实例详解
Dec 24 PHP
Windows下php+mysql5.7配置教程
May 16 PHP
Yii框架批量插入数据扩展类的简单实现方法
May 23 PHP
PHP 99乘法表的几种实现代码
Oct 13 PHP
PHP isset empty函数相关面试题及解析
Dec 11 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 Ajax中文乱码问题解决方法
2009/02/27 PHP
php for 循环语句使用方法详细说明
2010/05/09 PHP
win7+apache+php+mysql环境配置操作详解
2013/06/10 PHP
php比较两个绝对时间的大小
2014/01/31 PHP
PHP实现远程下载文件到本地
2015/05/17 PHP
php中动态变量用法实例
2015/06/10 PHP
基于jquery实现漂亮的动态信息提示效果
2011/08/02 Javascript
JavaScript 判断浏览器是否支持SVG的代码
2013/03/21 Javascript
轻松创建nodejs服务器(3):代码模块化
2014/12/18 NodeJs
Javascript 拖拽雏形中的一些问题(逐行分析代码,让你轻松了拖拽的原理)
2015/01/23 Javascript
jQuery代码实现发展历程时间轴特效
2015/07/30 Javascript
js添加绑定事件的方法
2016/05/15 Javascript
Node.js返回JSONP详解
2016/05/18 Javascript
微信小程序入门教程
2016/11/18 Javascript
JavaScript利用正则表达式替换字符串中的内容
2016/12/12 Javascript
微信小程序中实现一对多发消息详解及实例代码
2017/02/14 Javascript
Vue.js实现移动端短信验证码功能
2017/03/29 Javascript
Bootstrap提示框效果的实例代码
2017/07/12 Javascript
浅谈Webpack打包优化技巧
2018/06/12 Javascript
JavaScript获取某一天所在的星期
2019/09/05 Javascript
Vue实现菜单切换功能
2020/11/08 Javascript
python中bisect模块用法实例
2014/09/25 Python
Python检测字符串中是否包含某字符集合中的字符
2015/05/21 Python
Flask框架web开发之零基础入门
2018/12/10 Python
pytorch 自定义参数不更新方式
2020/01/06 Python
TensorFlow命名空间和TensorBoard图节点实例
2020/01/23 Python
tensorflow2.0保存和恢复模型3种方法
2020/02/03 Python
今天学到的CSS最新技术(与图片背景相关)
2012/12/24 HTML / CSS
css 元素选择器的简单实例
2016/05/23 HTML / CSS
意大利会呼吸的鞋:Geox健乐士
2017/02/12 全球购物
《我要的是葫芦》教学反思
2014/02/23 职场文书
学校评语大全
2014/05/06 职场文书
反邪教宣传工作方案
2014/05/07 职场文书
2014法院四风问题对照检查材料思想汇报
2014/10/04 职场文书
给老婆的保证书怎么写
2015/05/08 职场文书
婚育证明格式
2015/06/17 职场文书