首页 > 编程语言 >【web 开发基础】PHP 中的goto语句的使用 -PHP 快速入门 (23)

【web 开发基础】PHP 中的goto语句的使用 -PHP 快速入门 (23)

时间:2023-04-15 23:04:30浏览次数:48  
标签:语句 web end goto 跳转 循环 使用 PHP

前言

在所有的开发语言中不是都能使用goto语句,因为对goto的应用一直有争议。很多编程goto也只是作为保留关键字,比如java。支持goto的人认为goto语句使用起来比较灵活,而且有些情形能提高程序的效率。如果完全删去goto语句,有些情形反而会使程序变得过于复杂,增加一些不必要的计算量。持反对意见的人认为,goto语句是程序的静态结构和动态结构不一致,从而使程序难以理解、难以查错。去掉goto语句后,可直接从从程序上反映程序运行的过程,程序结构清晰、便于理解、方便查错。其实错误是程序员自己造成的,只是从实际的理解和处理上的不便造成,不是goto的过错。PHP从5.3以后的版本增加了goto语句,有些方面选择使用goto语句是有优势的。比如:从多重循环中直接跳出、出错时清除资源,有些情况也可以增加程序的清晰度。如下面的例子:使用goto语句编写循环的代码

<?php
$i =1;
st:  //声明一个标记st.标记名称可以自定义,标记开始
	echo "第{$i}次循环<br>";
	
	if($i++ == 10){
		goto end; //跳转到结束end标记
	}
	
goto st;//跳转到开始st标记

end: //声明一个end标记,标记名称可以自定义,用于退出循环,注意:这里是个冒号

echo "语句执行结束";

通过goto跳转到指定的标记

执行结果:

【web 开发基础】PHP 中的goto语句的使用 -PHP 快速入门 (23)_php

题外话:goto虽然有诸多好处,但是开发中还是很少会去使用它,因为我们习惯性不去使用它,还有人因为听到别人说,使用goto语句会导xxx问题,望而生畏,所以不敢尝试去使用它。其实最大的问题主要还是很多人没有理解和掌握它,无法很好的处理它。不过放弃它也并没有影响我们的开发,但是无论是否使用,学习还是学习,说不定哪天会用到。

goto语句

goto关键字后面带上目标位置的标志,在目标位置上用目标名加冒号标记。比如在第五行声明一个目标位置(自定义目标名称),在第11行使用goto语句跳转到第5行的目标位置,再执行到第11行又跳转到第5行形成循环。在循环中不能使用break退出,而是再次使用goto语句,跳到循环外的目标位置处结束循环。非goto的循环如果有多层循环,需要从多层循环中直接跳出,goto语句也是最好的选择。

<?php
for($i=0,$j=50;$i<100; $i++){
	while($j--){
		
		if($j==17){
			goto end;
		}
		else{
			echo "变量i={$i}, 变量j={$j}<br>";
		}
	}
}

echo "这条语句会执行吗:i = $i";

end:

执行结果:

【web 开发基础】PHP 中的goto语句的使用 -PHP 快速入门 (23)_自定义_02

除了使用goto语句编写循环,比较常用的是通过goto语句实现程序跳转:

<?php

$i = 2;
switch($i){
	case 1:
		goto one;
		echo "one";//已经跳转,不会执行到这里
	case 2:
		goto two;
		echo "two";//已经跳转,不会执行到这里
	case 3:
		goto three;
		echo "three";
}

//声明三个对应的goto跳转标记
one:
	echo "当变量为1时,将跳转到此处执行";
	exit;//退出程序
	
two:
	echo "当变量为2时,将跳转到此处执行";
	exit;//退出程序
	
three:
	echo "当变量为3时,将跳转到此处执行";
	exit;//退出程序

执行结果:

【web 开发基础】PHP 中的goto语句的使用 -PHP 快速入门 (23)_php_03

另外PHP中的goto语句使用时也有一定限制,只能在同一个文件和作用域中跳转,也就是说无法跳出一个函数或类方法,也无法跳入另一个函数,更无法跳入任何循环或者switch结构中。goto语句常见的用法是跳出循环或者switch语句,可以代替多层的break。来个反面教材:goto语句的一种错误用法代码如下:

<?php

for($i=0,$j=50;$i<100; $i++){
	while($j--){
		loop:  //把goto的跳转标记设置在循环中
	}
}

标签:语句,web,end,goto,跳转,循环,使用,PHP
From: https://blog.51cto.com/micai01/6192496

相关文章

  • php输出文言文句 一言接口定义
    随机本地词典内容,随机一行文本输出<?php//获取句子文件的绝对路径$file=file($yiyanPath."yiyan.txt");//随机读取一行$arr=mt_rand(0,count($file)-1);$content=trim($file[$arr]);echo$content;?>......
  • web安全1
    URL是:UniformResourceLocator支持多种协议:HTTP、FTP......作用:定义服务器的资源。URL相当于买东西时我们的收货地址详细格式:schema://host[:port#]/path/.../[?query-string][#anchor] 底层协议(例如:http,https,ftp)服务器的域名或者IP地址服务器端口,HTTP默认端口是80(可省略),其他端......
  • JavaWeb
    本篇文章是我在学习尚硅谷的JavaWeb视频视频做的学习笔记,尚硅谷的JavaWeb视频讲的很详细,欢迎去观看https://www.bilibili.com/video/BV1Y7411K7zz/?spm_id_from=333.337.search-card.all.click&vd_source=f38047c43021f07cf7a4e84b564bde02目录一、HTML和CSS1.1B/S软件的结构1......
  • java.lang.NoSuchMethodException: com.innovation.web.BuyServlet.get(javax.servlet
    问题描述我将路径定义到相应的servlet的函数方法里面,然后就出现了这个问题,很明显的找不到相应的函数方法;问题解决将目光重新放到我定义的相关路径那里,发现我出于习惯,将servlet里面原本应该是名为checkIt的函数方法写成了get方法,改回去之后,这个问题也就解决啦!......
  • centos7 无法启动 修复​​Internal error XFS_WANT_CORRUPTED_GOTO​报错
    InternalerrorXFS_WANT_CORRUPTED_GOTO错误前面括号中的就是磁盘名称,比如我的就是dm-0修复完reboot重启就能进系统了......
  • spring boot创建非web项目
    我们如何启动一个main方法去运行它呢使用也非常简单,我们只需要对springboot生成的代码做略微的修改即可。使用SpringApplicationBuilder来创建SpringApplication,并且配置WebApplicationType为NONE,这样即使有tomcat依赖也不会创建httpserver,执行run方法之后我们就得到了spring......
  • 使用web形式实现语音识别
    开心得嘞!终于在web界面实现接入语音识别接口啦!相关步骤的具体实现还是熟悉的步骤,先进入讯飞官网:https://www.xfyun.cn/然后注册、创建新应用,获取到自己的相关的三个参数!!!!!!!这三个:语音识别的话,主要是发生在前端,主要是跟js文件、css文件以及html文件有关,后端的话,就是获取到输入框......
  • Buuctf刷题Web 基础1
    1、[极客大挑战2019]EasySQL1题目,页面很酷炫!尝试一下万能密码提交得到flag{a21e57ef-6b2f-443e-a2fa-74635e6ce5aa}2、[极客大挑战2019]Havefun1题目是很可爱的一只小猫没有什么发现,F12检查一下于是乎传参http://84ceb43a-fd23-433b-9e30-84c174fd9b94.node4.buuoj.cn:81/?cat=......
  • WEB3-基本概念/名词
    名词解释每个行业都会存在一些只有行业内部才知道的“黑话”,有些人通过和你聊天就知道你是不是圈子里的人,这些名词往往是一些看着高大上,其实你明白后一定会说一句,原来就是这啊。现在我们整理下目前比较火的web3(区块链)中的一些名词。本文会持续更新~大饼-BTC行情二姨太-ETH......
  • Zotero 附件云同步(非 WebDAV 方法)
    1.说明适用范围更广,但是操作步骤较复杂。使用zotero仅同步题录信息,使用其他云同步程序同步文献的附件,此处以坚果云为例进行演示。准备:zotero和坚果云注册账号zotero的插件zotfile(国内汉化版)坚果云客户端Zotero插件集合2.操作流程2.1坚果云操作在网页端创......