php循环中断(break、continue)、循环语句、流程控制语句、goto语句、控制脚本执行循序、文件加载、加载路径和错误级别、系统触发以及做法步骤

本文深入讲解PHP中的控制结构,包括循环中断(break、continue)、循环语句、流程控制语句、goto语句、控制脚本执行顺序、文件加载、加载路径、错误级别、系统触发以及自定义错误处理器的做法步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在php中,该两个循环有更强的能力:中断”更多层“的循环,语法如下:
         1. break 正整数n;  //比如1,2,3;
         2. continue 正整数n;  //比如1,2,3;

循环的层,指的是从当前中断语句(break或continue)算起,往代码的“外部”数循环的个数,就是层数:

$s1=0;
$s2=0;
$s3=0;
$s4=0;
for ($i=0; $i < 2; $i++) { //循环一                    
	$s1++;
	for ($j=0; $j <2 ; $j++) { //循环二
		$s2++;
		for ($k=0; $k <2; $k++) { //循环三
			$s3++;
			for ($l=0; $l <2 ; $l++) { //循环四
				$s4++;
				break 2;
			}
		}
	}
}
echo "s1值".$s1;	        //s1值2
echo "<br>s2值".$s2;		//s2值4
echo "<br>s3值".$s3;		//s3值4
echo "<br>s4值".$s4;		//s4值4
$s1=0;
$s2=0;
$s3=0;
$s4=0;

for ($i=0; $i < 2; $i++) { //循环一                    
	$s1++;
	for ($j=0; $j <2 ; $j++) { //循环二
		$s2++;
		for ($k=0; $k <2; $k++) { //循环三
			$s3++;
			for ($l=0; $l <2 ; $l++) { //循环四
				$s4++;
				continue 2;
			}

		}
	}
}
 
echo "s1值".$s1;	        //s1值2
echo "<br>s2值".$s2;		//s2值4
echo "<br>s3值".$s3;		//s3值8
echo "<br>s4值".$s4;		//s4值8

了解一些循环
for(循环变量初始化;循环变量的条件判断;循环变量的改变){循环体}

while 循环:
循环变量初始化;
while(循环变量的条件判断){
循环体;
循环变量的改变;
}

do while循环:
循环变量的改变
do{
    循环体;
    循环变量的改变
} while ( 循环变量的条件判断) ;

 流程控制的替代语法
.if(...)。。。。。。。endif.
.if(...)。。。。。。。else。。。。。。endif.
.if(...)。。。。。。。。elseif(...)。。。elseif(...)。。。。else。。。。。endif.
.switch(...):case...case...endSwitch.
.while(...):。。。。。endwhile;
.for(...;...;...)。。。。endfor;

goto语句:

标识符1:
语句1.....
goto 标识符1: //含义是:立即转到表示符1所在位置的下一行继续执行
语句2.....
标识符1:
        语句3....
goto 标识符2:

for ($i=1; $i < 10; $i++) { 
	echo $i;
	if ($i == 5) {
		goto g1;
	}
}
g1:
	echo "gg1";
//12345上山打老虎

控制脚本执行循序

die(字符串)/exit(字符串):先运算(输出)
输出该字符串后,立即停止php的执行!及后续程序不再执行,暴露后续的其他所有php和html代码部分。他们也可以不加字符串,而是直接停止。

sleep():
让程序停止运行指定的秒数,然后等待过了那个时间后,就继续运行!  单位秒

文件加载

基本语法: include(),require(),include_once(),require_once().
include "文件路径"  或者   include("文件路径")  他们可以载入php,html 

include 加载失败(找不到文件),报错。还会执行后续代码;
     include  不判断是否重复  可能会出现重复。
     include_once   会判断之前是否载入。内容不重复
     
require 加载失败,报错终止执行;
      require  不判断是否重复  可能会出现重复。
      require_once  会判断之前是否载入。内容不重复 

 文件加载路径

例子 include 为例
3种路径形式
相对路径:
相对当前网页文件所在位置来定位某个被加载的文件路径位置,主要依赖一下2个特殊的路径符号:

 /  :表当前位置,即当前网页文件所在的位置(目录);
 ../:表示上一级位置,即当前的网页文件所在的位置的上一级位置(目录);
 比如:include './page.php'

 绝对路径:
本地绝对路径:例如  -C:\Program Files\Java\jdk1.7.0_21
网络绝对路径:例如  -php循环中断(break、continue)、循环语句、流程控制语句、goto语句、控制脚本执行循序、文件加载、加载路径和错误级别、系统触发以及做法步骤_Teddy Boy的博客-优快云博客
  __DIR__;   //获取当前文件路径
  $root = $_SERVER['DOCUMENT_ROOT']; // 获取当前站点的根目录

“无路径”(不建议使用)

系统自动去寻找判断,直到根目录位置
比如:include 'page.php' 

最后,文件加载时 return 返回数据  会终止载入,

错误分级 

php语言中,将各种错误进行了不同级别的分类归纳,并形成大约有10几个级别的错误,这就是技术层面的错误分级
每个级别的错误,都有一个“代号”,这个代号其实也就是一个系统内部的“常量”

  E_ERROR:     致命错误   
  E_WARNING:      警告性错误
  E_NOTICE:      提示性错误


系统触发

E_ERROR:     致命错误   无法执行程序 不存在的变量或者常量,
  E_WARNING:      警告性错误  
  E_NOTICE:      提示性错误

function GetBinStr($e){
	$s = decbin($e);//这是一个二进制数字字符串
	$s1 = str_pad($s,16,"0",STR_PAD_LEFT);
	return $s1;

}
echo "<pre>";
echo "<br>E_ERROR=" .E_ERROR.",\t\t其对应二进制值为".GetBinStr(E_ERROR);
echo "<br>E_WARNING=" .E_WARNING.",\t\t其对应二进制值为".GetBinStr(E_WARNING);
echo "<br>E_NOTICE=" .E_NOTICE.",\t\t其对应二进制值为".GetBinStr(E_NOTICE);
echo "<br>E_USER_NOTICE=" .E_USER_NOTICE.",\t其对应二进制值为".GetBinStr(E_USER_NOTICE);
echo "<br>E_ALL=" .E_ALL.",\t\t其对应二进制值为".GetBinStr(E_ALL);
echo "</pre>";

错误报告的显示问题

是否显示错误报告:
    2种显示设置:
        1、 php.ini文件,设定display_erros的值,on(显示)、off(不显示)
            注意:前提条件都是我们apache已经装载了PHP.ini文件————这一点需要在apache的配置文件httpd.config中加入如下一行:
                    PHPIniDir  "php.ini文件的位置(所在目录路径)"
        2、 直接在php的脚本文件中使用函数ini_set()来对其进行设置:
            ini_set("display_errors",0)      // 0为不显示 、1为显示
            只影响单页面;
            
            
错误日志的记录问题
        两个问题,每个问题都有两种做法:
        1.是否记录:
        php.ini:
            log_errors = On/Off
            
        脚本文件中:
            ini_set("log_errors",1)  1显示/0 不显示,
        
        ini_set("php配置项",值); //用于脚本中设置php.ini中的某项值
        $V1=ini_get("php配置项"); //用于获取php.ini中的某项值
        
        2.记录在哪里:
            ini_set("error_log","syslog"), //记录到系统日志文件中    
            系统日志文件在这里:控制面板》管理工具》事件查看器》window日志》应用程序:
            


自定义错误处理器
  一旦发生错误,用来处理该错误的一种“机器”   其实就是一个函数。
  自定义错误处理,就是:让系统不要去处理错误了,而完全有我们(开发者)来对错误进行处理:显示和记录。

做法两步:
1. 设定要用于处理错误的函数名!
  set_error_handler("fl"):
2. 去定义函数:
     function(){
         这里可以任意写代码:自然正常是去显示错误报告,和记录错误日志。

     }
我们准备要自己来定义错误“处理器”了;
第一步:设定要作为错误处理的函数名:
Set_error_handler("my_error_handler");
第二步,定义该函数:
该函数需要定义4个形参,分别代表:
$errCode:代表错误代号(级别)
$errMsg:代表发生错误信息内容
$errFile:代表发生错误文件名
$errLine:代表发生错误行号
不要在程序调用;而是错误发生自动被执行

 function my_error_handler($errCode,$errMsg,$errFile,$errLine){
     $str .= "<p><font color='red'>问题来了,发生错误:</font>"
     $str .= "<br />错误代号为:".$errCode;
     $str .= "<br />错误内容为:".$errMsg;
     $str .= "<br />错误文件为:".$errFile;
     $str .= "<br />错误行号为:".$errLine;
     $str .= "<br />错误时间为:".date("Y-d-m H:i:s");
     $str .= "</p>"
     echo $str; //输出该“构建”的错误完整处理结果,也可以将该内容“写入”到某个文件中去,也就是所谓记录错误日志!
     
 }

 拓展:

str_pad($str1,长度n,$str2,位置w)函数的作用:
        将字符串$str1,用字符串$str2填充到指定的长度n,而且可以指定填充的位置w,左边还是右边填充

  • STR_PAD_BOTH - 填充字符串的两侧。如果不是偶数,则右侧获得额外的填充。
  • STR_PAD_LEFT - 填充字符串的左侧。
  • STR_PAD_RIGHT - 填充字符串的右侧。默认。

<think>好的,用户想了解循环控制语句的知识点总结。首先,我需要回忆一下常见的循环结构,比如for、while、do-while,以及控制语句breakcontinue。根据用户提供的引用,引用[1]详细说明了C++中的循环类型,包括while、for、do-while嵌套循环。这可能是一个好的起点。接下来,用户提到的引用[2]引用[4]分别讨论了循环中的条件判断Python中的循环示例。比如,引用[4]中的例子展示了forwhile循环在密码验证中的应用,并使用了break语句。这说明控制语句breakcontinue循环中的重要性。然后,引用[3]中的C++代码使用了do-while循环,这引用[1]中的描述一致,即do-while至少执行一次循环体。需要强调不同循环结构的区别,比如条件判断的位置。另外,引用[5]是关于Shell脚本中的整数比较,虽然不直接相关,但可能用户之前的问题涉及不同语言的循环控制,所以需要确保总结涵盖多种语言,但用户现在的问题可能更关注通用概念,所以应该以通用结构为主,辅以具体语言示例。用户可能需要一个结构化的总结,分点列出循环类型、控制语句、注意事项等。同时,生成的相关问题需要考虑用户可能的后续疑问,比如优化循环效率、不同语言的区别等。 需要确保回答符合系统指令,如使用正确的LaTeX格式,独立公式用$$...$$,但这里可能不需要数学公式,但行内代码或术语可能需要用$...$,不过根据示例,代码块用```包裹,所以可能不需要。需要检查是否有变量或术语需要用LaTeX,比如可能循环变量$i$,但用户示例中没有使用,所以可能可以不用。 最后,确保回答引用正确的来源,例如引用[1]讨论循环类型,引用[2]关于跳转语句,引用[3][4]的代码示例,引用[5]可能不直接相关,但可以作为条件判断的例子。在总结时,适当标注引用来源,比如循环类型部分引用[1],控制语句引用[2],代码示例引用[3][4]。现在整理结构: 1.循环类型- while- for- do-while-嵌套循环(引用[1])2.控制语句-break(引用[2][4])- continue(引用[4])-其他如return、goto(可能引用[2])3.注意事项-避免死循环(引用[2][4])-循环变量管理-条件判断位置(do-while vswhile)4.代码示例-Python的forwhile(引用[4])- C++的do-while(引用[3]) 需要确保各部分引用正确,并在末尾添加相关问题,如循环优化、不同语言实现差异、避免死循环的方法等。</think>### 循环控制语句知识点总结 #### 一、循环类型 1. **while循环** 在循环执行前测试条件,若条件为真则执行循环体。例如: ```python a = 0 while a < 3: # 引用[4] a += 1 ``` 2. **for循环** 通过遍历序列(如列表、范围)控制循环次数,适用于已知迭代次数的场景。例如: ```python for _ in range(3): # 引用[4] print("执行循环") ``` 3. **do-while循环** 先执行循环体,再测试条件(至少执行一次)。C++示例: ```cpp do { // 循环体 } while (条件); // 引用[3] ``` 4. **嵌套循环** 在一个循环内包含另一个循环,例如双重循环遍历二维数组[^1]。 --- #### 二、循环控制语句 1. **break** 立即终止当前循环,跳转到循环外的下一条语句。例如: ```python if 密码正确: break # 引用[4] ``` 2. **continue** 跳过当前迭代剩余代码,直接进入下一次循环。例如: ```python for i in range(5): if i % 2 == 0: continue # 引用[4] print(i) ``` 3. **其他跳转语句** - `return`:结束函数并返回值(可能提前终止循环)[^2]。 - `goto`(部分语言支持):直接跳转到指定标签(需谨慎使用)[^2]。 --- #### 三、关键注意事项 1. **避免死循环** 确保循环条件最终会变为假,例如: ```python while True: # 需内部有break条件 if 满足条件: break # 引用[2] ``` 2. **循环变量管理** - for循环自动更新变量,而while需手动修改条件变量[^1]。 - 示例: ```python a = 0 while a < 3: # 需手动执行 a += 1 a += 1 # 引用[4] ``` 3. **条件判断位置** - `while`先判断后执行,`do-while`先执行后判断[^1][^3]。 --- #### 四、应用示例 **Python密码验证** ```python for _ in range(3): pwd = input("请输入密码:") if pwd == "888": break # 引用[4] ``` **C++ do-while循环** ```cpp do { std::cout << "猜测密码"; std::cin >> guess; } while (guess != 1234); # 引用[3] ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值