建议先阅读前篇文章:PHP从根本到入门(一)
流程掌握
循环构造
循环的中断
循环中,有两种中断语句可以利用:
break:
用于完备终止某个循环,让实行流程进入到循环语句后面的语句;
continue:
用于停滞当前正在进行确当次循环,而进入到循环的“下一次”过程中去(常日便是循环的开始位置);
在php中,该两个循环有更强的能力:中断“更多层”的循环,语法如下:
break 正整数n; //比如1,2,3;
continue 正整数n; //比如1,2,3;
循环的“层”,指的是从当前中断语句(break或continue)算起,往代码的“外部”数循环的个数,便是层数。比如:
for(...){ //循环1
for(...){ //循环2
for(...){ //循环3
break 2; //此时会中断循环2:实在指中断“2层”
//对此break语句,循环3是其“第一层”,循环2是其第2层,循环1是其第3层
}
contine 2; //此时会中断循环12:实在指中断“2层”
//对此contine语句,循环2是其“第1层”,循环1是其第2层,
}
}
do while循环:
for循环语句形式:
for(【循环变量初始化】; 【循环变量的条件判断】; 【循环变量的改变】){
//循环体语句。。。。
}
while循环语句形式:
【循环变量初始化】
while(【循环变量的条件判断】){
//循环体语句。。。
【循环变量的改变】
}
do while循环语句形式:
【循环变量初始化】
do {
//循环体语句。。。
【循环变量的改变】
}while(【循环变量的条件判断】);
解释:
1,do while会前辈入循环体实行一次(赓续定条件);
2,然后,判断循环条件是否知足,如果知足,又会回到do的开始位置(进入循环体)实行——这便是循环的正常情形。
3,如果不知足,就结束循环。
流程掌握的替代语法
if ( ... ) : 。。。。 endif;
if ( ... ) : 。。。else: 。。。 endif;
if ( ... ): 。。。elseif( ... ) : 。。。 elseif( ... ): 。。。 else: 。。。 endif;
switch( ... ) : case ... case ... endSwitch;
while(...): 。。。endwhile;
for(...; ...; ...): 。。。 endfor;
goto语句:
学此语句的目的是:不要用它!
语法形式:
//程序从这里开始:
标识符2:
语句群1.。。。。。
goto 标识符1; //含义是:立即跳转到标识符1所在位置的下一行连续实行
语句群2.。。。。。
标识符1:
语句群3.。。。。。
goto 标识符2:;
掌握脚本实行顺序
die(字符串)/exit(字符串):
输出该字符串后,立即停滞php的实行!
即后续程序不再实行,包括后续的其他所有php和html代码部分。
exit是die的同义词。他们也可以不加字符串,而是直接停滞。
sleep($n)
让程序停滞运行指定的秒数。然后等待过了那个韶光后,就连续运行!
把稳,其单位是“秒”;
文件加载
综述和基本语法:
1,有4个文件加载语句:include, require, include_once, require_once
2,他们的利用形式完备一样,比如: include “要加载的文件路径”; 或: include (“要加载的文件路径”);
3,他们的含义也险些完备一样:只是在加载失落败时或是否重复加载这种情形,有所不同。
4,他们可以载入php或html文件;
文件加载的路径问题:
条件解释:以下的解释举例,以include为例,也适用于其他3个加载语句;
有3中路径形式可以利用:
相对路径:
是相对付当前网页文件所在的位置来定位某个被加载的文件位置,紧张依赖以下2个分外的路径符号:
./ :表示当前位置,即当前网页文件所在的位置(目录);
../ :表示上一级位置,即当前网页文件所在的位置的上一级位置(目录);
我们须要用这2个符号来表达位置信息,比如:
include ‘./page1.php’; //表示当前网页文件所在位置的page1.php文件;
include ‘../page2.php’;
include ‘../ab/page3.html’;
绝对路径:
绝对路径又分2种:
本地绝对路径:
比如:
include “c:/d1/d2/p1.php”;
include “f:/f1/abc/p2.html”;
特殊把稳:我们实在险些都不应该在代码中直接写这种本地绝对路径!
但,实在我们这种本地绝对路径的写法是很常用的!
那怎么做?示例如下:
网络绝对路径:
比如:
include “http://www.abc.com/p1.php”;
include “http://www.baidu.com/index.php”;
“无路径”(不推举):
形式便是没有给出路径信息,而只给出文件名,我们不推举。
比如:include ‘page1.php’; //此时常日实在php措辞引擎会在当前网页目录下找该文件。
文件载入和实行过程详解
第1步:从include语句处退出php脚本模式(进入html代码模式)
第2步:载入include语句所设定的文件中的代码,并实行之(犹如在当前文件中一样)
第3步:退出html模式重新进入php脚本模式,连续实行之后的代码
它相称于:
4个载入语句的差异
include和require的差异:
include载入文件失落败时(即没有找到该文件),报一个“提示缺点”,然后连续实行后续代码;
requre载入文件失落败时,报错并立即终止实行。
常日,require用于在程序中,后续的代码依赖于载入的文件的时候。
include_once和require_once的差异:
同include和require的差异:
include和include_once的差异:
include载入的文件赓续定是否重复,只要有include语句,就会载入一次——即此时可能导致重复载入。
include_once载入的文件会有内部判断机制是否“前面代码”已经载入过,如果载入过,就不再载入。
require和require_once的差异:
同include和include_once的差异。
在被载入文件中return语句的浸染
1,一个载入语句,如果载入成功,实在是有返回值的,为1,如果载入失落败,则返回的是false。
(虽然我们常日不去利用该返回值)。
但,如果被载入文件中有return语句,此时就有其余的机制和浸染:
2,return语句此时的浸染是终止载入过程——该return语句的后续被载入文件的代码不再载入。
运行结果为:
3,return语句也可以用于该被载入文件载入时返回一个数据,形式为:return XX数据;
运行结果为:
缺点处理
缺点的分类
常日分3种:
语法缺点:
程序运行之前,都要先检讨语法。如果语法有缺点,就会立即报错,并且不会去实行程序。
运行时缺点:
便是在程序语法检讨通过后,,开始运行程序并在此过程中碰着的缺点。常见的有3中:
提示性缺点:
警告性缺点:
致命缺点:
逻辑缺点:
指的是,程序本身可以正常实行,没有报错——但“打算结果”却错了。
缺点的分级
php措辞中,将各种缺点进行了不同级别的分类归纳,并形成大约有10几个级别的缺点,这便是技能层面的缺点分级。
每一级别的缺点,都有一个“代号”,这个代号实在也便是一个别系内部的“常量而已”。比如:
系统常见缺点:
E_ERROR: 致命缺点
E_WARNING: 警告性缺点
E_NOTICE: 提示性缺点
用户可自定义的缺点:
E_USER_ERROR: 自定义致命缺点
E_USER_WARNING: 自定义警告性缺点
E_USER_NOTICE: 自定义提示性缺点
其他:
E_STRICT: 严谨性语法检讨缺点
E_ALL 代表“所有缺点”。
详细参考手册:
下面来看看这些缺点代号的实际值:
运行结果为:
缺点的触发
缺点的触发,便是让缺点“发生”。
有两种办法会触发缺点:
系统触发
程序运行到某行代码,确实涌现了某种缺点,此时系统就会报错——这便是触发了系统缺点。
系统触发的范例缺点有这3种:
E_NOTICE: 提示性缺点:会输出错误提示,并连续实行后续代码;
比如利用不存在的变量或常量:
E_WARNING: 警告性缺点:会输出错误提示,并连续实行后续代码(也可能看详细情形,比如require)
比如include载入一个不存在的文件:
E_ERROR: 致命缺点:导致程序无法实行后续语句;
比如调用一个不存在的函数!
自定义触发:
当我们处理某些数据的时候,本来数据本身是没有缺点的,但根据详细运用(业务)的须要,会哀求数据知足某种条件,而该数据并不知足的时候,我们就可以在程序中“主动”去触发(创建)一个缺点,以表明该数据的“造孽性”。
语法形式:
trigger_error(“缺点提示信息内容”, 3中用户缺点代号之一);
个中触发了用户的致命缺点(E_USER_ERROR),也会终止程序的后续实行。
缺点报告的显示问题
所谓缺点报告,便是显示在网页上的缺点提示内容!
有关缺点报告,有2个问题须要处理:
是否显示缺点报告(display_errors):
有2种做法可以来设定是否显示:
做法1:
在php.ini文件中,设定display_erros的值,为on(显示),或为off(不显示)
可以修正为:
当然,作为开拓阶段,我们都该当显示缺点信息。
把稳:条件条件都是我们apache已经装载了php.ini文件——这一点,须要在apache的配置文件httpd.config中加入如下一行:
PHPIniDir “php.ini文件的了位置(路径)”
比如:
方法2:
直接在php的脚本文件中设利用函数ini_set()来对其进行设置:
当然,如果设置为1,便是显示!
把稳:
1,不管哪种形式,该单词是一样的:display:errors
2,利用php.ini配置,影响的是全局(即所有php网页);
3,在某个脚本代码中利用ini_set()设置,就只影响该脚本代码本身——这是常用的办法。
4,脚本中的设置优先于php.ini中的设置。
显示哪些级别的缺点报告(error_reporting):
显然,条件是“display_errors”设置为On(或1),表示可以显示。
显示哪些级别的缺点报告,也有2个做法:
做法1:在php.ini文件中;
这个值目前代表“所有缺点”,都显示。
修正为:
此时就只显示E_NOTICE级别的缺点
更多示例为:
error_reporting = E_NOTICE | E_WARING | E_ERROR //显示该3种;
error_reporting = E_ERROR | E_USER_ERROR //显示该2种严重缺点
要想代表真正的“所有缺点”,该当写为:E_ERROR | E_STRICT,图示如下:
做法2:在当前的脚本代码中:
跟php.ini中设置实在是一样,举一些例子如下:
ini_set(“error_reporting”, E_NOTICE); //就显示该一个级别的缺点
ini_set(“error_reporting”, E_NOTICE | E_WARNING), //显示2个级别
ini_set(“error_reporting”, E_NOTICE | E_WARNING | E_ERROR), //显示3个级别
ini_set(“error_reporting”, E_ALL | E_STRICT), //这才代表显示所有缺点!
缺点日志的记录问题
缺点日志实在便是缺点报告,只是它会“写入文件中”,此时就称为缺点日志!
也有2个问题,每个问题也有2种做法:
是否记录log_errors:
php.ini中:
log_errors = On 或 Off
脚本中:
ini_set(“log_erros”, 1); 或 0
补充一句:
1:ini_set(“php配置项”, 值); //用于脚本中设置php.ini中是某项的值。
2,:$v1 = ini_get(“php配置项”); //用于获取php.ini中是某项的值
记录到哪里error_log:
一样平常就只有2个写法:
写法1:直策应用一个文件名,此时系统会自动在每个文件夹下都建立该文件名,并用其记录该文件夹下的所有网页文件发生的缺点信息。
然后实行一个有缺点的网页,并可以不雅观察到:
写法2:利用一个分外的名字“syslog”,则此时所有缺点信息都会记录到系统的“日志文件”中。
系统日志文件在这里:掌握面板》管理工具》事宜查看器》window日志》运用程序:
然后实行一个有缺点的网页,并可以不雅观察到:
自定义缺点处理器
什么叫缺点处理器?
便是一旦发生缺点,用来处理该缺点的一种“机器”——实在便是一个函数。
自定义缺点处理,便是指:
让系统不要去处理缺点了,而完备由我们(开拓者)来对缺点进行处理:显示和记录。
做法,实在非常大略,就2步:
第一步:
设定要用于处理缺点的函数名!
set_error_handler(“f1”);
第二步:
去定义该函数!
function f1(){
//这里可以任意写代码:自然正常是去显示缺点报告,和记录缺点日志。
}
更多课程请搜索微信"大众年夜众号“爱搞机个人版”,喜好学习的建议关注下,所有课程免费!
点下关注不迷路!