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版本号
Oct 09 PHP
Uchome1.2 1.5 代码学习 common.php
Apr 24 PHP
PHP图片处理类 phpThumb参数用法介绍
Mar 11 PHP
PHP 杂谈《重构-改善既有代码的设计》之五 简化函数调用
May 07 PHP
PHP+MySQL投票系统的设计和实现分享
Sep 23 PHP
php socket实现的聊天室代码分享
Aug 16 PHP
php树型类实例
Dec 05 PHP
php获取文件名后缀常用方法小结
Feb 24 PHP
基于PHP技术开发客服工单系统
Jan 06 PHP
php把字符串指定字符分割成数组的方法
Mar 12 PHP
PHP cookie与session会话基本用法实例分析
Nov 18 PHP
使用PHP开发留言板功能
Nov 19 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
cmd下运行php脚本
2008/11/25 PHP
php中++i 与 i++ 的区别
2012/08/08 PHP
解析PHP 5.5 新特性
2013/07/02 PHP
PHP开发中常见的安全问题详解和解决方法(如Sql注入、CSRF、Xss、CC等)
2014/04/21 PHP
PHP调用.NET的WebService 简单实例
2015/03/27 PHP
PHP中call_user_func_array回调函数的用法示例
2016/11/26 PHP
Laravel 批量更新多条数据的示例
2017/11/27 PHP
用JavaScript显示随机图像或引用
2009/04/21 Javascript
利用NodeJS的子进程(child_process)调用系统命令的方法分享
2013/06/05 NodeJs
jquery 图片缩放拖动的简单实例
2014/01/08 Javascript
Javascript排序算法之合并排序(归并排序)的2个例子
2014/04/04 Javascript
JavaScript实现生成GUID(全局统一标识符)
2014/09/05 Javascript
JS实现的左侧竖向滑动菜单效果代码
2015/10/19 Javascript
javascript:void(0)点击登录没反应怎么解决
2015/11/13 Javascript
Immutable 在 JavaScript 中的应用
2016/05/02 Javascript
jquery实现图片上传前本地预览功能
2016/05/10 Javascript
iScroll.js 使用方法参考
2016/05/16 Javascript
JavaScript实现相册弹窗功能(zepto.js)
2016/06/21 Javascript
JS使用正则表达式实现关键字替换加粗功能示例
2016/08/03 Javascript
浅谈Nodejs应用主文件index.js
2016/08/28 NodeJs
实现JavaScript高性能的数据存储
2016/12/11 Javascript
bootstrap table插件动态加载表头
2019/07/19 Javascript
JavaScript ES6 Class类实现原理详解
2020/05/08 Javascript
使用anaconda的pip安装第三方python包的操作步骤
2018/06/11 Python
Python解析、提取url关键字的实例详解
2018/12/17 Python
python 统计文件中的字符串数目示例
2019/12/24 Python
python实现信号时域统计特征提取代码
2020/02/26 Python
python统计字符串中字母出现次数代码实例
2020/03/02 Python
matplotlib 对坐标的控制,加图例注释的操作
2020/04/17 Python
keras.layer.input()用法说明
2020/06/16 Python
python常量折叠基础知识点讲解
2021/02/28 Python
HTML5 File API改善网页上传功能
2009/08/19 HTML / CSS
用C语言实现文件读写操作
2013/10/27 面试题
2015年教师党员自我评价材料
2015/03/04 职场文书
浅谈Redis跟MySQL的双写问题解决方案
2022/02/24 Redis
Golang使用Panic与Recover进行错误捕获
2022/03/22 Golang