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 相关文章推荐
mysql 的 like 问题,超强毕杀记!!!
Jan 18 PHP
PHP stristr() 函数(不区分大小写的字符串查找)
Jun 03 PHP
php笔记之:初探PHPcms模块开发介绍
Apr 26 PHP
基于php上传图片重命名的6种解决方法的详细介绍
Apr 28 PHP
基于PHP的简单采集数据入库程序
Jul 30 PHP
Yii 快速,安全,专业的PHP框架
Sep 03 PHP
PHP处理JSON字符串key缺少双引号的解决方法
Sep 16 PHP
php实现微信扫码自动登陆与注册功能
Sep 22 PHP
php的api数据接口书写实例(推荐)
Sep 22 PHP
thinkPHP模板中for循环与switch语句用法示例
Nov 30 PHP
PHP编程实现csv文件导入mysql数据库的方法
Apr 29 PHP
PHP设计模式之 策略模式Strategy详解【对象行为型】
May 01 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
使用JSON实现数据的跨域传输的php代码
2011/12/20 PHP
关于使用coreseek并为其做分页的介绍
2013/06/21 PHP
在Linux系统下一键重新安装WordPress的脚本示例
2015/06/30 PHP
教你在PHPStorm中配置Xdebug
2015/07/27 PHP
大家都应该掌握的PHP关联数组使用技巧
2015/12/25 PHP
PHP中__set()实例用法和基础讲解
2019/07/23 PHP
JQuery读取XML文件数据并显示的实现代码
2009/12/16 Javascript
jQuery 打造动态下滑菜单实现说明
2010/04/15 Javascript
jQuery 学习第五课 Ajax 使用说明
2010/05/17 Javascript
jquery插件之easing使用
2010/08/19 Javascript
js给onclick赋值传参数的两种方法
2013/11/25 Javascript
PHPExcel中的一些常用方法汇总
2015/01/23 Javascript
针对JavaScript中this指向的简单理解
2016/08/26 Javascript
Bootstarp基本模版学习教程
2017/02/01 Javascript
详解JSONObject和JSONArray区别及基本用法
2017/10/25 Javascript
JS中原始值和引用值的储存方式示例详解
2018/03/23 Javascript
200行HTML+JavaScript实现年会抽奖程序
2019/01/22 Javascript
微信小程序中悬浮窗功能的实现代码
2019/08/02 Javascript
[01:38]DOTA2辉夜杯 欢乐的观众现场采访
2015/12/26 DOTA
[07:20]2018DOTA2国际邀请赛寻真——逐梦Mineski
2018/08/10 DOTA
python获取本地计算机名字的方法
2015/04/29 Python
基于asyncio 异步协程框架实现收集B站直播弹幕
2016/09/11 Python
python将txt文件读取为字典的示例
2018/12/22 Python
详解pandas的外部数据导入与常用方法
2019/05/01 Python
树莓派动作捕捉抓拍存储图像脚本
2019/06/22 Python
Django 接收Post请求数据,并保存到数据库的实现方法
2019/07/12 Python
python ftplib模块使用代码实例
2019/12/31 Python
屏蔽Django admin界面添加按钮的操作
2020/03/11 Python
Python基于time模块表示时间常用方法
2020/06/18 Python
Python判断字符串是否为合法标示符操作
2020/09/03 Python
巧用HTML5给按钮背景设计不同的动画简单实例
2016/08/09 HTML / CSS
台湾专柜女包:KINAZ
2019/12/26 全球购物
门诊手术室工作制度
2014/01/30 职场文书
安全教育月活动总结
2014/05/05 职场文书
建筑施工安全生产责任书
2014/07/22 职场文书
党小组评议意见
2015/06/02 职场文书