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 09 PHP
php循环语句 for()与foreach()用法区别介绍
Sep 05 PHP
apache和php之间协同工作的配置经验分享
Apr 08 PHP
php preg_replace替换实例讲解
Nov 04 PHP
百度站点地图(百度sitemap)生成方法分享
Jan 09 PHP
PHP Session机制简介及用法
Aug 19 PHP
通过php添加xml文档内容的方法
Jan 23 PHP
php实现window平台的checkdnsrr函数
May 27 PHP
文件上传之SWFUpload插件(代码)
Jul 30 PHP
PHP addAttribute()函数讲解
Feb 03 PHP
laravel withCount 统计关联数量的方法
Oct 10 PHP
PhpSpreadsheet中文文档 | Spreadsheet操作教程实例
Apr 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模拟HTTP认证
2006/10/09 PHP
PHP采用XML-RPC构造Web Service实例教程
2014/07/16 PHP
php工具型代码之印章抠图
2018/07/18 PHP
php 根据URL下载远程图片、压缩包、pdf等文件到本地
2019/07/26 PHP
js Html结构转字符串形式显示代码
2011/11/15 Javascript
基于JavaScript实现继承机制之构造函数+原型链混合方式的使用详解
2013/05/07 Javascript
JavaScript判断文件上传类型的方法
2014/09/02 Javascript
JavaScript调用浏览器打印功能实例分析
2015/07/17 Javascript
JavaScript入门基础
2015/08/12 Javascript
JQuery标签页效果的两个实例讲解(4)
2015/09/17 Javascript
jquery实现简单实用的弹出层效果代码
2015/10/15 Javascript
json的使用小结
2016/06/08 Javascript
JavaScript基础之AJAX简单的小demo
2017/01/29 Javascript
为什么我们要做三份 Webpack 配置文件
2017/09/18 Javascript
PHP 实现一种多文件上传的方法
2017/09/20 Javascript
利用pm2部署多个node.js项目的配置教程
2017/10/22 Javascript
VUE 配置vue-devtools调试工具及安装方法
2018/09/30 Javascript
js使用swiper实现层叠轮播效果实例代码
2018/12/12 Javascript
vue-cli点击实现全屏功能
2020/03/07 Javascript
JS前端基于canvas给图片添加水印
2020/11/11 Javascript
python判断一个集合是否包含了另外一个集合中所有项的方法
2015/06/30 Python
Python实现嵌套列表去重方法示例
2017/12/28 Python
pandas删除指定行详解
2019/04/04 Python
python3发送邮件需要经过代理服务器的示例代码
2019/07/25 Python
浅谈Python2之汉字编码为unicode的问题(即类似\xc3\xa4)
2019/08/12 Python
tensorflow2.0保存和恢复模型3种方法
2020/02/03 Python
Python 日期时间datetime 加一天,减一天,加减一小时一分钟,加减一年
2020/04/16 Python
法国滑雪假期的专家:Ski Planet
2019/11/02 全球购物
酒店销售经理岗位职责
2014/01/31 职场文书
国家励志奖学金个人先进事迹材料
2014/05/04 职场文书
工作证明范本(2篇)
2014/09/14 职场文书
2014年学习全国道德模范事迹思想汇报
2014/09/15 职场文书
画展邀请函
2015/01/31 职场文书
水浒传读书笔记
2015/06/25 职场文书
CSS 新特性 contain控制页面的重绘与重排问题
2021/04/30 HTML / CSS
Centos7 Shell编程之正则表达式、文本处理工具详解
2022/08/05 Servers