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 autoload与spl_autoload自动加载机制的深入理解
Jun 05 PHP
让PHP显示Facebook的粉丝数量方法
Jan 08 PHP
php实现可以设置中奖概率的抽奖程序代码分享
Jan 19 PHP
将php数组输出html表格的方法
Feb 24 PHP
phpmyadmin配置文件现在需要绝密的短密码(blowfish_secret)的2种解决方法
May 07 PHP
PHP下的Oracle客户端扩展(OCI8)安装教程
Sep 10 PHP
php的sso单点登录实现方法
Jan 08 PHP
php使用ffmpeg向视频中添加文字字幕的实现方法
May 23 PHP
PHP安装GeoIP扩展根据IP获取地理位置及计算距离的方法
Jul 01 PHP
php 生成签名及验证签名详解
Oct 26 PHP
PHP实现表单提交数据的验证处理功能【防SQL注入和XSS攻击等】
Jul 21 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
php笔记之常用文件操作
2010/10/12 PHP
PHP查询MySQL大量数据的时候内存占用分析
2011/07/22 PHP
php开发微信支付获取用户地址
2015/10/04 PHP
php pthreads多线程的安装与使用
2016/01/19 PHP
Zend Framework教程之请求对象的封装Zend_Controller_Request实例详解
2016/03/07 PHP
javascript 页面只自动刷新一次
2009/07/10 Javascript
json-lib出现There is a cycle in the hierarchy解决办法
2010/02/24 Javascript
JQuery Ajax 跨域访问的解决方案
2010/03/12 Javascript
javascript 面向对象 function类
2010/05/13 Javascript
一个原生的用户等级的进度条
2010/07/03 Javascript
Bookmarklet实现启动jQuery(模仿 云输入法)
2010/09/15 Javascript
JavaScript将页面表格导出为Excel的具体实现
2013/12/27 Javascript
基于Jquery+div+css实现弹出登录窗口(代码超简单)
2015/10/27 Javascript
jQuery学习心得总结(必看篇)
2016/06/10 Javascript
AngularJS 实现弹性盒子布局的方法
2016/08/30 Javascript
基于touch.js手势库+zepto.js插件开发图片查看器(滑动、缩放、双击缩放)
2016/11/17 Javascript
AngularJS实现使用路由切换视图的方法
2017/01/24 Javascript
vue+axios+mock.js环境搭建的方法步骤
2018/08/28 Javascript
JS实现数组的增删改查操作示例
2018/08/29 Javascript
说说Vue.js中的functional函数化组件的使用
2019/02/12 Javascript
详解Vue中组件的缓存
2019/04/20 Javascript
详解Element-UI中上传的文件前端处理
2019/08/07 Javascript
python通过urllib2获取带有中文参数url内容的方法
2015/03/13 Python
python实现的系统实用log类实例
2015/06/30 Python
python实现生成字符串大小写字母和数字的各种组合
2019/01/01 Python
使用PyQt5实现图片查看器的示例代码
2020/04/21 Python
python下载的库包存放路径
2020/07/27 Python
简单html5代码获取地理位置
2014/03/31 HTML / CSS
法国包包和行李箱销售网站:Bagage24.fr
2020/03/24 全球购物
责任心演讲稿
2014/05/14 职场文书
优秀党员自我评价范文
2014/09/15 职场文书
甜品店创业计划书
2014/09/21 职场文书
党员四风问题对照检查材料
2014/09/27 职场文书
学校艾滋病宣传活动总结
2015/05/09 职场文书
《烈火英雄》观后感:致敬和平时代的英雄
2019/11/11 职场文书
详解Redis集群搭建的三种方式
2021/05/31 Redis