PHP易混淆知识整理笔记
《PHP实例:PHP易混淆知识整理笔记》要点: PHP教程1.echo和print的区别 PHP教程PHP中echo和print的功能基原形同(输出),但是两者之间还是有细微差别的.echo输出后没有返回值,但print有返回值,当其执行失败时返回flase.因此可以作为一个普通函数来使用,例如执行下面的代码后变量$r的值将为1. PHP教程
$r = print "Hello World";
PHP教程这意味着print可用在一些复杂的表达式中,而echo则不行.但是,因为echo语句不要求返回任何数值,所已在代码中echo语句的运行效率要略微快于print语句. PHP教程2.include与require的区别 PHP教程include()与require()的功能也基本相同(包括),但在用法上也有一些不同,include()是有条件包括函数,而require()则是无条件包括函数.例如在下面代码中,如果变量$a为真,则将包括文件a.php: PHP教程
if($a){
include("a.php");
}
PHP教程而require()则和include()不同,不管$a取何值,下面的代码将把文件a.php包括进文件里: PHP教程
if($a){
require("a.php");
}
PHP教程在错误处理方面,使用include语句,如果发生包括错误,程序将跳过include语句,虽然会显示错误信息但是程序还是会继续执行!但requre却会给你来个致命错误. PHP教程当然,从字面意思上我们也可以理解七分:requre是很强硬的哀求、要求的意思. PHP教程3.require_once()和include_once()语句 PHP教程题外话了,因为长的像,简单require_once()和include_once()语句分别对应于require()和include()语句.require_once() 和include_once()语句主要用于需要包括多个文件时,可以有效地避免把同一段代码包括进去而出现函数或变量重复定义的错误. PHP教程4.空字符串('')和NULL的区别 PHP教程PHP中空字符串和NULL都是以值为0存储的,但是他们的类型并纷歧样,你可以试一下echo gettype('');和echo gettype(NULL);你会发现他们打印出来的分别是string和NULL,当然还有0也容易混淆,你可以试试echo gettype(0);打印一下类型,会发现0的类型是integer(整型),可见字符串('')、NULL和0是“等值”但不等类型. PHP教程5.isset和 empty的区别 PHP教程从字面意思上我们就可以明白:empty是判断一个变量是否为“空”,而isset 则是判断一个变量是否已经设置.但是这里有一点绝对要注意起来:当一个变量值为0,empty 认为这个变量同等于空,即相当于没有设置.好比当我们检测$id 变量的时候,当$id=0,用empty和isset来检测变量$id是否已经配置,两都将返回不同的值:empty 认为没有配置,isset 则能够取得 $id 的值,看下边例子: PHP教程
$id=0;
empty($id)?print "我是空的":print "我是$id ."; //成果:我是空的
!isset($id)?print "我是空的":print "我是$id .";//成果:我是0
PHP教程6.==(等)和===(恒等)的区别 PHP教程回顾上面第四条空字符串("")和NULL的区别,再来看一个例子: PHP教程
'' == NULL;
'' === NULL;
PHP教程运行之后你会发现第一个为true,而第二个则为false!可见==只是比拟值是否相等,而===则不但比拟值,还会比拟类型,更为严格. PHP教程7.self :: 和 this-> 的区别 PHP教程在拜访PHP类中的成员变量或方法时,如果被引用的变量或者方法被声明成const(定义常量)或者static(声明静态),那么就必须使用操作符::,反之如果被引用的变量或者方法没有被声明成const或者static,那么就必须使用操作符->. PHP教程另外,如果从类的内部拜访const或者static变量或者方法,那么就必须使用自引用的self,反之如果从类的内部拜访不为const或者static变量或者方法,那么就必须使用自引用的$this. PHP教程8.strstr() 与 strpos() 的区别 PHP教程stristr() 不区分年夜小写 strstr() 区分年夜小写 PHP教程函数查找字符串在另一个字符串中第一次呈现的位置. PHP教程如果成功,则返回字符串的别的部分(从匹配点).如果没有找到该字符串,则返回 false. PHP教程stripos() 不区分年夜小写 strpos() 区分年夜小写 PHP教程函数返回字符串在另一个字符串中第一次呈现的位置. PHP教程如果没有找到该字符串,则返回 false. PHP教程经测试证明如果只是单纯查找判断是否存在则strpos()的执行效率要年夜于strstr() PHP教程9.PHP中 HTTP_HOST 和 SERVER_NAME PHP教程相同点: PHP教程当满足以下三个条件时,两者会输出相同信息. PHP教程1. 服务器为80端口 PHP教程2. apache的conf中ServerName设置正确 PHP教程3. HTTP/1.1协议规范 PHP教程分歧点: PHP教程1. 通常情况: PHP教程_SERVER["HTTP_HOST"] 在HTTP/1.1协议规范下,会根据客户端的HTTP哀求输出信息. PHP教程_SERVER["SERVER_NAME"] 默认情况下直接输出apache的配置文件httpd.conf中的ServerName值. PHP教程2. 当服务器为非80端口时: PHP教程_SERVER["HTTP_HOST"] 会输出端标语,例如:mimiz.cn:8080 PHP教程_SERVER["SERVER_NAME"] 会直接输出ServerName值 PHP教程因此在这种情况下,可以理解为:HTTP_HOST = SERVER_NAME : SERVER_PORT PHP教程3. 当配置文件httpd.conf中的ServerName与HTTP/1.0哀求的域名不一致时: PHP教程httpd.conf配置如下: PHP教程ServerName mimiz.cn PHP教程ServerAlias www.mimiz.cn PHP教程客户端拜访域名www.mimiz.cn PHP教程_SERVER["HTTP_HOST"] 输出 www.mimiz.cn PHP教程_SERVER["SERVER_NAME"] 输出 mimiz.cn PHP教程所以,在实际程序中,应尽量使用_SERVER["HTTP_HOST"],比拟保险和可靠. PHP教程如果在端口映射的情况下,并且在内网拜访,用“$_SERVER['HTTP_X_FORWARDED_HOST']”比较好. PHP教程经过小编对以上知识点的整理,年夜家的思路是不是更清晰了,对这些概念是不是有了区分,那就好好收藏这份笔记吧! 编程之家培训学院每天发布《PHP实例:PHP易混淆知识整理笔记》等实战技能,PHP、MYSQL、LINUX、APP、JS,CSS全面培养人才。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |