PHP易混淆知识整理笔记
PHP易混淆知识整理笔记
php经常会混淆的知识点有很多,例如include与require的区别;require_once()和include_once()语句等一些列的知识点,感觉这方面欠缺的朋友可以参考一下!
1.echo和print的区别
(资料图片)
PHP中echo和print的功能基本相同(输出),但是两者之间还是有细微差别的。echo输出后没有返回值,但print有返回值,当其执行失败时返回flase。因此可以作为一个普通函数来使用,例如执行下面的代码后变量$r的值将为1。
1 | $r = print "Hello World" ; |
这意味着print可用在一些复杂的表达式中,而echo则不行。但是,因为echo语句不要求返回任何数值,所已在代码中echo语句的运行效率要略微快于print语句。
2.include与require的区别
include()与require()的功能也基本相同(包含),但在用法上也有一些不同,include()是有条件包含函数,而require()则是无条件包含函数。例如在下面代码中,如果变量$a为真,则将包含文件a.php:
123 | if ( $a ){ include ( "a.php" ); } |
而require()则和include()不同,不管$a取何值,下面的代码将把文件a.php包含进文件里:
123 | if ( $a ){ require ( "a.php" ); } |
在错误处理方面,使用include语句,如果发生包含错误,程序将跳过include语句,虽然会显示错误信息但是程序还是会继续执行!但requre却会给你来个致命错误。
当然,从字面意思上我们也可以理解七分:requre是很强硬的请求、要求的意思。
3.require_once()和include_once()语句
题外话了,因为长的像,简单require_once()和include_once()语句分别对应于require()和include()语句。require_once() 和include_once()语句主要用于需要包含多个文件时,可以有效地避免把同一段代码包含进去而出现函数或变量重复定义的错误。
4.空字符串("")和NULL的区别
PHP中空字符串和NULL都是以值为0存储的,但是他们的类型并不一样,你可以试一下echo gettype("");和echo gettype(NULL);你会发现他们打印出来的分别是string和NULL,当然还有0也容易混淆,你可以试试echo gettype(0);打印一下类型,会发现0的类型是integer(整型),可见字符串("")、NULL和0是“等值”但不等类型。
5.isset和 empty的区别
从字面意思上我们就可以明白:empty是判断一个变量是否为“空”,而isset 则是判断一个变量是否已经设置。但是这里有一点绝对要注意起来:当一个变量值为0,empty 认为这个变量同等于空,即相当于没有设置。比如当我们检测$id 变量的时候,当$id=0 ,用empty和isset来检测变量$id是否已经配置,两都将返回不同的值:empty 认为没有配置,isset 则能够取得 $id 的值,看下边例子:
123 | $id =0; empty ( $id )? print "我是空的" : print "我是$id ." ; //结果:我是空的 !isset( $id )? print "我是空的" : print "我是$id ." ; //结果:我是0 |
6.==(等)和===(恒等)的区别
回顾上面第四条空字符串("")和NULL的"区别,再来看一个例子:
12 | "" == NULL; "" === NULL; |
运行之后你会发现第一个为true,而第二个则为false!可见==只是比较值是否相等,而===则不但比较值,还会比较类型,更为严格。
7.self :: 和 this-> 的区别
在访问PHP类中的成员变量或方法时,如果被引用的变量或者方法被声明成const(定义常量)或者static(声明静态),那么就必须使用操作符::,反之如果被引用的变量或者方法没有被声明成const或者static,那么就必须使用操作符->。
另外,如果从类的内部访问const或者static变量或者方法,那么就必须使用自引用的self,反之如果从类的内部访问不为const或者static变量或者方法,那么就必须使用自引用的$this。
8.strstr() 与 strpos() 的区别
stristr() 不区分大小写 strstr() 区分大小写
函数查找字符串在另一个字符串中第一次出现的位置。
如果成功,则返回字符串的其余部分(从匹配点)。如果没有找到该字符串,则返回 false。
stripos() 不区分大小写 strpos() 区分大小写
函数返回字符串在另一个字符串中第一次出现的位置。
如果没有找到该字符串,则返回 false。
经测试证明如果只是单纯查找判断是否存在则strpos()的执行效率要大于strstr()
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的配置文件httpd.conf中的ServerName值。
2. 当服务器为非80端口时:
_SERVER["HTTP_HOST"] 会输出端口号,例如:mimiz.cn:8080
_SERVER["SERVER_NAME"] 会直接输出ServerName值
因此在这种情况下,可以理解为:HTTP_HOST = SERVER_NAME : SERVER_PORT
3. 当配置文件httpd.conf中的ServerName与HTTP/1.0请求的域名不一致时:
httpd.conf配置如下:
ServerName mimiz.cn
ServerAlias www.mimiz.cn
客户端访问域名www.mimiz.cn
_SERVER["HTTP_HOST"] 输出 www.mimiz.cn
_SERVER["SERVER_NAME"] 输出 mimiz.cn
所以,在实际程序中,应尽量使用_SERVER["HTTP_HOST"] ,比较保险和可靠。
如果在端口映射的情况下,并且在内网访问,用“$_SERVER["HTTP_X_FORWARDED_HOST"]”比较好。
经过小编对以上知识点的整理,大家的思路是不是更清晰了,对这些概念是不是有了区分,那就好好收藏这份笔记吧!
标签: require_once
精彩推送
美地质调查局:土耳其强震后记录到至少18次超4级余震_环球聚看点
【美地质调查局:土耳其强震后记录到至少18次超4级余震】据美国有线电视新闻网(CNN)2月6日消息,美国...
新闻快讯
X 关闭
X 关闭
新闻快讯
- PHP易混淆知识整理笔记
- 自热方便火锅使用方法_自热火锅怎么使用_世界热文
- 亚马逊CEO称将“做大”实体店 全球微资讯
- 如期实现建军一百年奋斗目标 最大限度地释放改革效能
- 提高自己修为的九大妙法!
- 当前快讯:中原证券集成版和专业版区别_中原证券集成版
- 世界观天下!腌好的酸豆角怎么保存时间长
- 送老婆什么花好
- 爱的定义是什么|每日热闻
- 当前热门:大众汽车还剩下哪些热销车,这些车还“够高级”吗?
- 送40岁男人礼物排行榜-每日播报
- S*ST佳通: 佳通轮胎股份有限公司关于公司股票可能被终止上市的第二次风险提示公告
- 广东一周内发生两次地震 专家解析“背后是否有关联”
- 世界球精选!圭亚那内政部长高度评价中国援圭医疗队
- 热门看点:初灵信息收深交所关注函,此前股价一度大涨超60%
- 北海市社保个人最低交多少钱一个月2023 北海市社保缴费详情|观点
- 四年级下册琥珀是怎么形成的_琥珀形成的过程-天天看热讯
- 财富自由的标准表格_财富自由的标准
- 买车要加价?看我如何反向操作-环球速看
- 世界简讯:酒井美纪_说一说酒井美纪的简介
- 恶搞蛋糕送男生
- 英超
- 关于幸福的名人小故事-焦点热文
- 简怀玉_关于简怀玉介绍
- 全球热文:联合国人权专家指美国制度化警务文化纵容警察实施犯罪攻击
- 世界热议:延迟退休大势已定,机关事业单位人员等四类人影响如何?
- 小学四年级下册数学期末试卷人教版2021-小学四年级下册数学期末试卷人教版-全球最资讯
- 纳茜素是什么国的牌子档次?narciso for her香水怎么样
- 《异星觉醒》事实告诉我们,未知生物需要在安全保障下才能够研究!-当前要闻
- 当前报道:支票十月的大写_支票上10月大写怎么写
- 水浒传内容简介100字以上_水浒传内容简介100字
- 一月份海外同比增长17.1%,上汽集团今年销量目标是冲刺600万辆
- 天天热消息:做软文推广怎么选择媒体投放?
- 同富股份IPO:毛利率连续三年下滑且低于行业均值 自有品牌占比低存在竞争劣势-环球速看
- 罗马诺:曼联、枪手、红军关注法蒂情况,拜仁目前没有采取行动 观天下
- 关于父亲的歌曲15首 关于父亲的歌曲大全
- 当前看点!油豆皮的家常做法大全_油豆皮的家常做法
- 汽车新消息:2019日内瓦车展:斯柯达KAMIQ实车亮相 每日快播
- 二型呼吸衰竭诊断标准 m.由来.cn_二型呼吸衰竭诊断标准
- 天天微头条丨双卡双待智能手机哪款好_双模手机推荐
- 更场面的入门级巡航:QJMOTOR 闪350试驾初体验 每日精选
- 《霍格沃茨之遗》今晚发售,索尼将为其推出定制款 PS5 手柄-天天微资讯
- 存款利息怎么计算-今日热文
- 送日本男客户什么礼物好
- 3.8% 无锡成首个“3字头”房贷利率城市
- 爆竹声中辞旧岁下句是什么_爆竹声中辞旧岁
- 【all耀】是新的家人欸! 天天快看
- 2018款迈腾召回更换_2017款迈腾召回了大众迈腾召回最新消息 世界独家
- 拼多多“为你读书”公益行动走进甘肃礼县 翻山越岭“为你读书” ,甘肃礼县迎来名师“开学第一课” 每日热闻
- 本命年能结婚吗 在本命年中结婚好吗