php中var_export与var_dump的区别分析


Posted in PHP onAugust 21, 2010

一 var_dump
(PHP 3 >= 3.0.5, PHP 4, PHP 5)
var_dump -- 打印变量的相关信息
描述
void var_dump ( mixed expression [, mixed expression [, ...]] )

此函数显示关于一个或多个表达式的结构信息,包括表达式的类型与值。数组将递归展开值,通过缩进显示其结构。

$data = array ('name' => 'abc', 'job' => 'programmer','a'=>array('aa','cc','bb')); 
$data = var_dump($data,TRUE); 
echo $data;

输出形式如下:
array(3) { 
["name"]=> 
string(3) "abc" 
["job"]=> 
string(10) "programmer" 
["a"]=> 
array(3) { 
[0]=> 
string(2) "aa" 
[1]=> 
string(2) "cc" 
[2]=> 
string(2) "bb" 
} 
} 
bool(true)

二 var_export
(PHP 4 >= 4.2.0, PHP 5)
var_export -- 输出或返回一个变量的字符串表示
描述
mixed var_export ( mixed expression [, bool return] )

此函数返回关于传递给该函数的变量的结构信息,它和 var_dump() 类似,不同的是其返回的表示是合法的 PHP 代码。
您可以通过将函数的第二个参数设置为 TRUE,从而返回变量的表示。
EG:
var_export(array('a','b',array('aa','bb','cc'))) 这种与VAR_DUMP没什么区别;

$var =var_export(array('a','b',array('aa','bb','cc')),TRUE),加上TRUE后,不会再打印出来,而是给了一个变量,这样就可以直接输出;
echo $var;此时输出来的形式与var_dump()打印的相似。
EG2

$data = array ('name' => 'abc', 'job' => 'programmer','a'=>array('aa','cc','bb')); 
$data = var_export($data,TRUE); 
echo $data;

输出形式如下:
array ( 
'name' => 'abc', 
'job' => 'programmer', 
'a' => 
array ( 
0 => 'aa', 
1 => 'cc', 
2 => 'bb', 
), 
)

以下是补充资料:
error_log(var_export(yblog_mspconfiginit("ratings"),true));
问题原因
var_export必须返回合法的php代码, 也就是说,var_export返回的代码,可以直接当作php代码赋值个一个变量。而这个变量就会取得和被var_export一样的类型的值。但是, 当变量类型为resource的时候, 是无法简单copy复制的,所以, 当var_export的变量是resource类型时, var_export会返回NULL.

问题发现
在跟踪yratings_get_targets的时候,

error_log(var_export(yblog_mspconfiginit("ratings"),true));老是打印出yblog_mspconfiginit(“ratings”)的返回是NULL

导致我以为是无法建立和DB的连接,走错路了一天。

最后才发现,这是var_export和var_dump的区别之一

这就是:

问题原因
var_export必须返回合法的php代码, 也就是说,var_export返回的代码,可以直接当作php代码赋值个一个变量。 而这个变量就会取得和被var_export一样的类型的值

但是, 当变量类型为resource的时候, 是无法简单copy复制的,所以, 当var_export的变量是resource类型时, var_export会返回NULL
实例

$res = yblog_mspconfiginit("ratings"); 
var_dump($res); 
var_export($res);

结果:
resource(1) of type (yahoo_yblog)

NULL再比如:
$res = fopen('status.html', 'r'); 
var_dump($res); 
var_export($res);

结果:
resource(2) of type (stream) 
NULL
PHP 相关文章推荐
解析PHP留言本模块主要功能的函数说明(代码可实现)
Jun 25 PHP
php生成缩略图示例代码分享(使用gd库实现)
Jan 20 PHP
PHP开发框架kohana中处理ajax请求的例子
Jul 14 PHP
PHP使用feof()函数读文件的方法
Nov 07 PHP
PHP中使用break跳出多重循环代码实例
Jan 21 PHP
PHP连接access数据库
Mar 27 PHP
php循环table实现一行两列显示的方法
Jun 04 PHP
Yii列表定义与使用分页方法小结(3种方法)
Jul 15 PHP
PHP实现多级分类生成树的方法示例
Feb 07 PHP
PHP htmlspecialchars() 函数实例代码及用法大全
Sep 18 PHP
thinkphp5框架API token身份验证功能示例
May 21 PHP
Laravel 添加多语言提示信息的方法
Sep 29 PHP
php visitFile()遍历指定文件夹函数
Aug 21 #PHP
php excel类 phpExcel使用方法介绍
Aug 21 #PHP
php下正则来匹配dede模板标签的代码
Aug 21 #PHP
php中使用ExcelFileParser处理excel获得数据(可作批量导入到数据库使用)
Aug 21 #PHP
使用VisualStudio开发php的图文设置方法
Aug 21 #PHP
利用Memcached在php下实现session机制 替换PHP的原生session支持
Aug 21 #PHP
ThinkPHP中实例Model方法的区别说明
Aug 21 #PHP
You might like
日本十大最佳动漫,全都是二次元的神级作品
2019/10/05 日漫
PHP默认安装产生系统漏洞
2006/10/09 PHP
php将字符串全部转换成大写或者小写的方法
2015/03/17 PHP
php获取访问者IP地址汇总
2015/04/24 PHP
PHP判断文件是否被引入的方法get_included_files用法示例
2016/11/29 PHP
PHP生成zip压缩包的常用方法示例
2019/08/22 PHP
IE6图片加载的一个BUG解决方法
2010/07/13 Javascript
js 实现 input type="file" 文件上传示例代码
2013/08/07 Javascript
js去空格技巧分别去字符串前后、左右空格
2013/10/21 Javascript
js实现的GridView即表头固定表体有滚动条且可滚动
2014/02/19 Javascript
jQuery中after()方法用法实例
2014/12/25 Javascript
moment.js轻松实现获取当前日期是当年的第几周
2015/02/05 Javascript
javascript模拟评分控件实现方法
2015/05/13 Javascript
jQuery遍历json的方法(推荐)
2016/06/12 Javascript
AngularJS表单验证中级篇(3)
2016/09/28 Javascript
javascript实现页面滚屏效果
2017/01/17 Javascript
Angular 4.x中表单Reactive Forms详解
2017/04/25 Javascript
React Native中导航组件react-navigation跨tab路由处理详解
2017/10/31 Javascript
js字符串倒序的实例代码
2018/11/30 Javascript
JS数组进阶示例【数组的几种函数用法】
2020/01/16 Javascript
手把手教您实现react异步加载高阶组件
2020/04/07 Javascript
动态实现element ui的el-table某列数据不同样式的示例
2021/01/22 Javascript
[49:05]Newbee vs TNC 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
pandas数据分组和聚合操作方法
2018/04/11 Python
transform python环境快速配置方法
2018/09/27 Python
学会python自动收发邮件 代替你问候女友
2020/05/20 Python
Python中猜拳游戏与猜筛子游戏的实现方法
2020/09/04 Python
大客户销售经理职责
2013/12/04 职场文书
护士岗位职责
2014/02/16 职场文书
学生党员公开承诺书
2014/05/28 职场文书
小班下学期幼儿评语
2014/12/30 职场文书
如何理解python接口自动化之logging日志模块
2021/06/15 Python
python ansible自动化运维工具执行流程
2021/06/24 Python
nginx结合openssl实现https的方法
2021/07/25 Servers
Java练习之潜艇小游戏的实现
2022/03/16 Java/Android
JAVA长虹键法之建造者Builder模式实现
2022/04/10 Java/Android