goto 语法在 PHP 中的使用
在C++、Java及很多语言中,都存在着一个神奇的语法,就是goto。顾名思义,它的使用是直接去到某个地方。从代码的角度来说,也就是直接跳转到指定的地方。PHP中也有这个功能,我们先来看看它是如何使用的:
goto a;
echo ""; // 不会输出 a:
echo ''; //
代码运行到 goto 位置时,就跳转到了 a: 所在的代码行并继续执行下去。这个功能对于复杂的嵌套 if 或者在一些循环中进行跳出很有用,特别是针对某些异常或者错误情况的处理,比如:
for ($i = , $j = ; $i < ; $i++) {
while ($j--) {
if ($j == ) { // 假设$j==17是一种异常情况
goto end; // 直接跳走了,循环结束的结果也不输出了
}
}
}
echo "i = $i";
end:
echo 'j hit 17'; // 直接到这里输出或者处理异常情况了
不过 goto 语法也有一些限制情况:
- 目标位置只能位于同一个文件和作用域,也就是说无法跳出一个函数或类方法,也无法跳入到另一个函数
- 无法跳入到任何循环或者 switch 结构中
- 跳出循环或者 switch,通常的用法是用 goto 代替多层的 break
比如以下的代码都是无效的:
$a = ;
goto switchgo;
switch ($a){
case :
echo 'bb';
break;
case :
echo 'cc';
switchgo:
echo "bb";
break;
} goto whilego;
while($a < ){
$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中的使用
在C++.Java及很多语言中,都存在着一个神奇的语法,就是goto.顾名思义,它的使用是直接去到某个地方.从来代码的角度来说,也就是直接跳转到指定的地方.我们的PHP中也有这个功能,我们先来看看它是 ...
- Exit 与 Goto :eof 在批处理中的区别【转】
在 CMD 命令提示符窗口直接运行: 1.) 运行 Goto :eof 后,CMD 返回并将等待下一命令. 2.) 运行 Exit 后,CMD 将直接关闭并返回到曾启动 Cmd.exe 的程序或返回到 ...
- XPath语法 在C#中使用XPath示例 【转http://www.cnblogs.com/yukaizhao/archive/2011/07/25/xpath.html】非常详细的文章
XPath语法 在C#中使用XPath示例 XPath可以快速定位到Xml中的节点或者属性.XPath语法很简单,但是强大够用,它也是使用xslt的基础知识. 示例Xml: <?xml ve ...
- angluarjs中页面初始化的时候会出现语法{{}}在页面中问题
angluarjs中页面初始化的时候会出现语法{{}}在页面中问题,也即是页面闪烁问题.出现这个的原因是:由于页面或者组件需要渲染加载数据,浏览器和angluarjs渲染页面需要消耗一定的时间,虽然这 ...
- Delphi的goto语法
今天第一次主要到Delphi也有goto语法,特别是其奇怪的label声明.估计主要是用来跳出多重循环,而且还真有人使用这种方式.记个笔记: procedure TForm1.btn3Click(Se ...
- SystemVerilog基本语法总结(中)
Systemverilog 语法总结(中) 上一个博客分享了SV基本的概念,这一博客继续分享,等下一个博客分享一个公司的验证的笔试题目. l 事件 背景: Verilog中当一个线程在一个事件上发生阻 ...
- Java基础语法(8)-数组中的常见排序算法
title: Java基础语法(8)-数组中的常见排序算法 blog: CSDN data: Java学习路线及视频 1.基本概念 排序: 是计算机程序设计中的一项重要操作,其功能是指一个数据元素集合 ...
- PHP流程控制之goto语法
自 PHP 5.3.0 起,还可以使用 goto 来跳出循环. 在本章开始的章节,我们讲解到一个故事,王同学每周往返,但有一个特例:直线电机滑台 项目失败后或者集团临时除知除外,他就可以不再这么每周往 ...
- [C++][语言语法]标准C++中的string类的用法总结
转自:http://www.cnblogs.com/xFreedom/archive/2011/05/16/2048037.html 要想使用标准C++中string类,必须要包含 #include ...
随机推荐
- redis读写分离及可用性设计
Redis缓存架构设计 对于下面两个架构图,有如下想法: 1)redis主从复制模式,为了解决master读写压力,对master进行写操作,对slave进行读操作. 2)而在分片集群中,如果对部分分 ...
- 微信小程序内置组件web-view的缓存问题探讨
前言:博客或者论坛上面,还有自习亲身经历,发现微信小程序的webview组件的页面缓存问题相当严重,对开发H5的小童鞋来说应该困扰了不少.很多小童鞋硬是抓破脑袋也没有办法解决这个问题,那我们今天就来探 ...
- three.js 制作逻辑转体游戏(下)
上一篇已经对绕非定轴转动有所了解,这篇郭先生继续说一说逻辑转体游戏的制作,这部分我们同样会遇到一些小问题,首先是根据数据渲染陷阱和目标区域,然后是对可以转动的判定,最后是获胜的判定. 1. 根据数据渲 ...
- windows下cmd命令行计算文件hash值
命令:certutil -hashfile certutil -hashfile D:\.exe MD5 certutil -hashfile D:\.exe SHA1 certutil -hashf ...
- Python开发的入门教程(五)-set
介绍 本文主要介绍Python中set的基本知识和使用. Python中什么是set dict的作用是建立一组 key 和一组 value 的映射关系,dict的key是不能重复的. 有的时候,我们只 ...
- Json解析方式汇总 excel vba
一. 这种方式比较复杂,因为office版本的原因,所以要加其它函数 Private Function parseScript(strJson As String) Dim objJson As Ob ...
- jmeter将上一个接口的返回值作为下一个接口的请求参数
接口响应结果,通常为HTML.Json格式的数据,对于HTML的响应结果的提取,可以通过正则表达式,XPath提取. 对于Json格式响应结果,可以通过正则表达式.JSON Extractor插件.B ...
- 我是怎样刚拿饿了么P7 offer,然后途虎一轮游的
今年初拿了个饿了么P7的offer,于此同时大家顺便看看我怎么途虎一轮游的.废话不多说,直接上题吧. 一面 首先上来就是自我介绍,简单的说下自己的项目经验,涉及的技术栈之类的. 然后每一轮必问的问题来 ...
- QString 字符串操作
Qt QString字符串分割.截取(转载) 在做项目中不可避免的会使用到一串字符串中的一段字符,因此常常需要截取字符串. 有两种方式可以解决这个问题: 方法一:QString分割字符串: QStri ...
- 获取访问的ip地址
最近有一个这样的需求:{ 内网没有访问互联网的权限(没网) 内网:访问链接地址,跳转http://www.123.com 外网:访问链接地址,跳转http;//www.456.com } 在网上看到一 ...