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数据库的PHP程序
Oct 09 PHP
php日历[测试通过]
Mar 27 PHP
php下通过POST还是GET来传值
Jun 05 PHP
PHP中实现中文字符进制转换原理分析
Dec 06 PHP
PHP 第二节 数据类型之数组
Apr 28 PHP
php 生成唯一id的几种解决方法
Mar 08 PHP
php取整函数ceil,floo,round的用法及介绍
Aug 31 PHP
百度工程师讲PHP函数的实现原理及性能分析(三)
May 13 PHP
PHP中余数、取余的妙用
Jun 29 PHP
PHP实现抓取迅雷VIP账号的方法
Jul 30 PHP
PHP错误处理函数register_shutdown_function使用示例
Jul 03 PHP
Laravel5.5以下版本中如何自定义日志行为详解
Aug 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
php+mysql分页代码详解
2008/03/27 PHP
php面向对象全攻略 (二) 实例化对象 使用对象成员
2009/09/30 PHP
PHP实现求连续子数组最大和问题2种解决方法
2017/12/26 PHP
php无限极分类实现方法分析
2019/07/04 PHP
一些经常会用到的Javascript检测函数
2010/05/31 Javascript
jquery 简短几句代码实现给元素动态添加及获取提示信息
2011/09/01 Javascript
javascript作用域容易记错的两个地方分析
2012/06/22 Javascript
js判断上传文件的类型和大小示例代码
2013/10/18 Javascript
iframe子页面获取父页面元素的方法
2013/11/05 Javascript
js浮点数保留两位小数点示例代码(四舍五入)
2013/12/26 Javascript
JQuery中使用.each()遍历元素学习笔记
2014/11/08 Javascript
JavaScript创建一个object对象并操作对象属性的用法
2015/03/23 Javascript
jquery实现简单的无缝滚动
2015/04/15 Javascript
针对初学者的jQuery入门指南
2015/08/15 Javascript
不能不知道的10个angularjs英文学习网站
2016/03/23 Javascript
移动设备手势事件库Touch.js使用详解
2017/08/18 Javascript
vue+vuex+json-seiver实现数据展示+分页功能
2019/04/11 Javascript
浅谈关于vue中scss公用的解决方案
2019/12/02 Javascript
详解Vue中的Props与Data细微差别
2020/03/02 Javascript
vue中封装axios并实现api接口的统一管理
2020/12/25 Vue.js
Python Socket编程入门教程
2014/07/11 Python
Python的网络编程库Gevent的安装及使用技巧
2016/06/24 Python
pyqt5利用pyqtDesigner实现登录界面
2019/03/28 Python
python实现文件的备份流程详解
2019/06/18 Python
关于Python Tkinter Button控件command传参问题的解决方式
2020/03/04 Python
Iconfont(矢量图标)+iconmoon(图标svg互转)配合javascript实现社交分享系统
2020/04/21 Python
容易被忽略的Python内置类型
2020/09/03 Python
python 使用csv模块读写csv格式文件的示例
2020/12/02 Python
Russell Stover巧克力官方网站:美国领先的精美巧克力制造商
2016/11/27 全球购物
施华洛世奇中国官网:SWAROVSKI中国
2020/06/16 全球购物
应届生污水处理求职信
2013/11/06 职场文书
万年牢教学反思
2014/02/15 职场文书
党校培训自我鉴定范文
2014/03/20 职场文书
幼儿园小班个人总结
2015/02/12 职场文书
在pyCharm中下载第三方库的方法
2021/04/18 Python
html+css实现环绕倒影加载特效
2021/07/07 HTML / CSS