background image

php var_export 与 var_dump 输出的不同

var_export 必须返回合法的 php 代码,也就是说,var_export 返回的代码,可以直接当作
php 代码赋值个一个变量。 而这个变量就会取得和被 var_export 一样的类型的值
问题发现
在跟踪

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