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
Windows 下的 PHP-PEAR 安装方法
Nov 20 PHP
基于empty函数的输出详解
Jun 17 PHP
解析php中用PHPMailer来发送邮件的示例(126.com的例子)
Jun 24 PHP
Php output buffering缓存及程序缓存深入解析
Jul 15 PHP
ThinkPHP访问不存在的模块跳转到404页面的方法
Jun 19 PHP
php获取url参数方法总结
Nov 13 PHP
PHP图片处理之使用imagecopy函数添加图片水印实例
Nov 19 PHP
yii分页组件用法实例分析
Dec 28 PHP
在PHP语言中使用JSON和将json还原成数组的方法
Jul 19 PHP
PHP封装的完整分页类示例
Aug 21 PHP
PHP数组基本用法与知识点总结
Jun 02 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-Redis安装测试笔记
2015/03/05 PHP
php curl发送请求实例方法
2019/08/01 PHP
laravel withCount 统计关联数量的方法
2019/10/10 PHP
YII2框架中behavior行为的理解与使用方法示例
2020/03/13 PHP
Javascript 同时提交多个Web表单的方法
2009/02/19 Javascript
javascript中的void运算符语法及使用介绍
2013/03/10 Javascript
Javascript实现滑块滑动改变值的实现代码
2013/04/12 Javascript
js控制表单奇偶行样式的简单方法
2013/07/31 Javascript
javascript随机将第一个dom中的图片添加到第二个div中示例
2013/10/08 Javascript
js时间日期格式化封装函数
2014/12/02 Javascript
Nodejs中读取中文文件编码问题、发送邮件和定时任务实例
2015/01/01 NodeJs
jQuery实现鼠标悬停背景翻转的黑色导航菜单代码
2015/09/14 Javascript
深入理解JavaScript函数参数(推荐)
2016/07/26 Javascript
javascript 面向对象function详解及实例代码
2017/02/28 Javascript
AngularJS ui-router (嵌套路由)实例
2017/03/10 Javascript
详解webpack2+node+react+babel实现热加载(hmr)
2017/08/24 Javascript
node.js中axios使用心得总结
2017/11/29 Javascript
vue实现样式之间的切换及vue动态样式的实现方法
2017/12/19 Javascript
jQuery实现每隔一段时间自动更换样式的方法分析
2018/05/03 jQuery
JS基于封装函数实现的表格分页完整示例
2018/06/26 Javascript
JS实现用特殊符号替换字符串的中间部分区域的实例代码
2018/07/24 Javascript
js实现简单分页导航栏效果
2019/06/28 Javascript
Vue过渡效果之CSS过渡详解(结合transition,animation,animate.css)
2020/02/05 Javascript
Python 3.6打包成EXE可执行程序的实现
2019/10/18 Python
Django 解决新建表删除后无法重新创建等问题
2020/05/21 Python
初级软件工程师面试题 Junior Software Engineer Interview
2015/02/15 面试题
毕业生毕业总结的自我评价范文
2013/11/02 职场文书
高中毕业生生活的自我评价
2013/12/08 职场文书
财务专业大学生职业生涯规划范文
2013/12/30 职场文书
扬尘污染防治方案
2014/06/15 职场文书
万能检讨书2000字
2014/10/17 职场文书
2015年世界环境日活动方案
2015/05/05 职场文书
大学班长竞选稿
2015/11/20 职场文书
springboot使用Redis作缓存使用入门教程
2021/07/25 Redis
VS2019连接MySQL数据库的过程及常见问题总结
2021/11/27 MySQL
默认网关不可用修复后过一会又不好使了解决方法
2022/04/08 数码科技