PHP易混淆知识整理笔记

1.echo和print的区别

PHP中echo和print的功用基本相似,不过两者之间照旧有细微差其他。echo输出后并未有重返值,但print有重回值,当其推行停业时再次来到flase。由此得以当做叁个枯燥无味函数来行使,比方推行上面的代码后变量$r的值将为1。

$r = print "Hello World"; 

那表示print可用在部分繁缛的表明式中,而echo则不行。可是,因为echo语句不必要再次回到任何数值,所已在代码中echo语句的周转效用要微微快于print语句。

2.include与require的区别

include(State of Qatar与require(卡塔尔国的效果也基本相近,但在用法上也许有局地比不上,include(卡塔尔(قطر‎是有法则包涵函数,而require(State of Qatar则是无条件包罗函数。举例在上面代码中,假诺变量$a为真,则将含有文件a.php:

if($a){ include("a.php"); } 

而require(卡塔尔(قطر‎则和include(卡塔尔国差别,不管$a取何值,上面包车型大巴代码将把公文a.php满含进文件里:

if($a){ require("a.php"); } 

在错误管理方面,使用include语句,假诺产生富含错误,程序将跳过include语句,即便会显得错误消息不过程序照旧会继续施行!但requre却会给你来个致命错误。

本来,从字面意思上大家也得以领略柒分:requre是很刚劲的乞请、须求的乐趣。

3.require_once()和include_once()语句

题外话了,因为长的像,简单require_once()和include_once(卡塔尔(قطر‎语句分别对应于require(State of Qatar和include(卡塔尔国语句。require_once()
和include_once(卡塔尔语句首要用于需求饱含多少个文本时,能够有效地制止把同一段代码满含进去而现身函数或变量重复定义的荒唐。

4.空字符串(”卡塔尔(قطر‎和NULL的区分

PHP中空字符串和NULL都是以值为0存款和储蓄的,然而他们的门类并不均等,你能够试一下echo
gettype(”卡塔尔国;和echo
gettype(NULL卡塔尔;你会意识她们打印出来的独家是string和NULL,当然还应该有0也轻易模糊,你能够试试echo
gettype(0卡塔尔(قطر‎;打字与印刷一下类型,会开掘0的体系是integer,可以看到字符串(”State of Qatar、NULL和0是“等值”但区别类型。

5.isset和 empty的区别

从字面意思上大家就可以精晓:empty是判别二个变量是或不是为“空”,而isset
则是剖断一个变量是不是已经安装。不过这里有点一定要潜心起来:当贰个变量值为0,empty
以为那几个变量同等于空,即一对一于尚未设置。例如当大家检查实验$id
变量的时候,当$id=0
,用empty和isset来检查实验变量$id是不是曾经计划,两都将赶回不相同的值:empty
以为还未布置,isset 则能够得到 $id 的值,看上边例子:

$id=0; empty($id)print "我是空的":print "我是$id ."; //结果:我是空的 !isset($id)print "我是空的":print "我是$id .";//结果:我是0 

6.==和===的区别

回看上面第四条空字符串(“”State of Qatar和NULL的不一致,再来看叁个例证:

'' == NULL; '' === NULL; 

运作之后你会发觉第二个为true,而第三个则为false!可以预知==只是相比较值是或不是等于,而===则不但相比值,还可能会相比类型,更为严刻。

7.self :: 和 this- 的区别

在做客PHP类中的成员变量或艺术时,假如被引述的变量大概措施被声称成const大概static,那么就务须利用操作符::,反之倘使被引述的变量大概措施没有被声称成const只怕static,那么就亟须采取操作符-。

除此以外,借使从类的个中访谈const恐怕static变量大概措施,那么就必需使用自援引的self,反之假若从类的里边采访不为const可能static变量只怕措施,那么就非得选用自援引的$this。

8.strstr() 与 strpos() 的区别

stristr(State of Qatar 不区分轻重缓急写 strstr(卡塔尔国 区分朗朗上口写

函数查找字符串在另一个字符串中第一回面世的职责。

假如成功,则赶回字符串的别的部分。若无找到该字符串,则赶回 false。

stripos(State of Qatar 不区分朗朗上口写 strpos(卡塔尔(قطر‎ 区分抑扬顿挫写

函数再次来到字符串在另二个字符串中率先次面世的职分。

设若未有找到该字符串,则赶回 false。

经测验表明假设只是然而查找剖断是不是存在则strpos(State of Qatar的实践功用要超越strstr(State of Qatar

9.PHP中 HTTP_HOST 和 SERVER_NAME

相同点:

当满意以下多少个条件时,两个会输出相仿新闻。

  1. 服务器为80端口

  2. apache的conf中ServerName设置科学

  3. HTTP/1.1公约正式

不同点:

  1. 平凡状态:

_SERVER[“HTTP_HOST”]
在HTTP/1.1说道正式下,会依赖客商端的HTTP央浼输出音讯。

_SERVER[“SERVER_NAME”]
默许情形下直接出口apache的安排文件中的ServerName值。

  1. 当服务器为非80端口时:

_SERVER[“HTTP_HOST”] 会输出端口号,比方:mimiz.cn:8080

_SERVER[“SERVER_NAME”] 会直接出口ServerName值

所以在此种景观下,能够知晓为:HTTP_HOST = SERVER_NAME : SERVER_PORT

  1. 当配置文件中的ServerName与HTTP/1.0乞请的域名分裂时:

安插如下:

ServerName mimiz.cn

ServerAlias

顾客端访谈域名

_SERVER[“HTTP_HOST”] 输出

_SERVER[“SERVER_NAME”] 输出 mimiz.cn

就此,在实质上程序中,应竭尽选拔_SERVER[“HTTP_HOST”]
,比较保证和可信。

假如在端口映射的景况下,並且在内网访谈,用“$_SERVER[‘HTTP_X_FORWARDED_HOST’]”比较好。

由此小编对上述知识点的收拾,我们的笔触是还是不是更清晰了,对那一个概念是还是不是有了分别,那就完美无缺珍藏那份笔记吧!

You can leave a response, or trackback from your own site.

Leave a Reply

网站地图xml地图