php中echo()和print()、require()和include()等易混淆函数的区别


Posted in PHP onFebruary 22, 2012

1.echo和print的区别

PHP中echo和print的功能基本相同(输出),但是两者之间还是有细微差别的。echo输出后没有返回值,但print有返回值,当其执行失败时返回flase。因此可以作为一个普通函数来使用,例如执行下面的代码后变量$r的值将为1。

$r = print "Hello World";

这意味着print可用在一些复杂的表达式中,而echo则不行。但是,因为echo语句不要求返回任何数值,所已在代码中echo语句的运行效率要略微快于print语句。

2.include与require的区别

include()与require()的功能也基本相同(包含),但在用法上也有一些不同,include()是有条件包含函数,而require()则是无条件包含函数。例如在下面代码中,如果变量$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()和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 的值,看下边例子:
$id=0;
emptyempty($id)?print "我是空的":print "我是$id ."; //结果:我是空的
!isset($id)?print "我是空的":print "我是$id .";//结果:我是0

6.==(等)和===(恒等)的区别

回顾上面第四条空字符串("")和NULL的区别,再来看一个例子:

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

运行之后你会发现第一个为true,而第二个则为false!可见==只是比较值是否相等,而===则不但比较值,还会比较类型,更为严格。

PHP 相关文章推荐
php项目打包方法
Feb 18 PHP
php笔记之:初探PHPcms模块开发介绍
Apr 26 PHP
windows环境下php配置memcache的具体操作步骤
Jun 09 PHP
PHP中常用的输出函数总结
Sep 22 PHP
php实现在服务器上创建目录的方法
Mar 16 PHP
typecho插件编写教程(五):核心代码
May 28 PHP
PHP模板引擎Smarty自定义变量调解器用法
Apr 11 PHP
PHP上传图片时判断上传文件是否为可用图片的方法
Oct 20 PHP
PHPExcel在linux环境下导出报500错误的解决方法
Jan 26 PHP
详解Yii2.0 rules验证规则集合
Mar 21 PHP
PHP面向对象程序设计重载(overloading)操作详解
Jun 13 PHP
PHP实现财务审核通过后返现金额到客户的功能
Jul 04 PHP
我的php学习笔记(毕业设计)
Feb 21 #PHP
PHP中运用jQuery的Ajax跨域调用实现代码
Feb 21 #PHP
修改PHP的memory_limit限制的方法分享
Feb 21 #PHP
php中取得文件的后缀名?
Feb 20 #PHP
ThinkPHP写第一个模块应用
Feb 20 #PHP
for循环连续求和、九九乘法表代码
Feb 20 #PHP
phpmail类发送邮件函数代码
Feb 20 #PHP
You might like
php中数字0和空值的区别分析
2014/06/05 PHP
PHP将Excel导入数据库及数据库数据导出至Excel的方法
2015/06/24 PHP
PHP 实现的将图片转换为TXT
2015/10/21 PHP
php 如何获取文件的后缀名
2016/06/05 PHP
深入理解PHP 数组之count 函数
2016/06/13 PHP
PHP中类型转换 ,常量,系统常量,魔术常量的详解
2017/10/26 PHP
基于jquery的direction图片渐变动画效果
2010/05/24 Javascript
jQuery中:lt选择器用法实例
2014/12/29 Javascript
jQuery入门基础知识学习指南
2015/08/14 Javascript
jQuery热气球动画半透明背景的后台登录界面代码分享
2015/08/28 Javascript
js 弹出虚拟键盘修改密码的简单实例
2016/10/10 Javascript
JS闭包用法实例分析
2017/03/27 Javascript
微信小程序上滑加载下拉刷新(onscrollLower)分批加载数据(二)
2017/05/11 Javascript
Angular.JS中的this指向详解
2017/05/17 Javascript
详解vue2.0脚手架的webpack 配置文件分析
2017/05/27 Javascript
关于JavaScript中的this指向问题总结篇
2017/07/23 Javascript
Vue编写多地区选择组件
2017/08/21 Javascript
Vue中的ref作用详解(实现DOM的联动操作)
2017/08/21 Javascript
利用node.js如何创建子进程详解
2017/12/09 Javascript
vue路由传参的基本实现方式小结【三种方式】
2020/02/05 Javascript
在vue中使用cookie记住用户上次选择的实例(本次例子中为下拉框)
2020/09/11 Javascript
浅谈Vue使用Cascader级联选择器数据回显中的坑
2020/10/31 Javascript
[14:03]2017DOTA2亚洲邀请赛开幕式:12神兵演绎水墨中华
2017/04/01 DOTA
[00:36]TI7不朽珍藏III——斯温不朽展示
2017/07/15 DOTA
[47:04]LGD vs infamous Supermajor小组赛D组 BO3 第二场 6.3
2018/06/04 DOTA
python创建关联数组(字典)的方法
2015/05/04 Python
Python使用chardet判断字符编码
2015/05/09 Python
python调用xlsxwriter创建xlsx的方法
2018/05/03 Python
3行Python代码实现图像照片抠图和换底色的方法
2019/10/10 Python
阿联酋网上花店:Ferns N Petals
2018/02/14 全球购物
Notino瑞典:购买香水和美容产品
2019/07/26 全球购物
学习自我鉴定
2014/02/01 职场文书
青年志愿者先进事迹
2014/05/06 职场文书
社区护士演讲稿
2014/08/27 职场文书
社区学习党的群众路线教育实践活动心得体会
2014/11/03 职场文书
2015年医院创卫工作总结
2015/04/22 职场文书