在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的博客-CSDN博客
__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 - 填充字符串的右侧。默认。