>

php中var_export与var_dump的分化剖判

- 编辑:正版管家婆马报彩图 -

php中var_export与var_dump的分化剖判

一 var_dump (PHP 3 >= 3.0.5, PHP 4, PHP 5)
var_dump -- 打字与印刷变量的相关音信
描述
void var_dump ( mixed expression [, mixed expression [, ...]] )

无论是json_decode还是var_export都以有第二个参数的,此前一直未有在乎过,T_T.而且,这个var_export函数也是率先次知道,基础啊,照旧不踏实。

此函数字呈现示关于二个或多个表明式的结构消息,包罗表明式的品种与值。数组将递归张开值,通过缩进展现其组织。

json_decode
(PHP 5 >= 5.2.0, PECL json:1.2.0-1.2.1)
json_decode — 对 JSON 格式的字符串举行编码
说明
mixed json_decode ( string $json [, bool $assoc ] )
接受三个 JSON 格式的字符串並且把它调换为 PHP 变量

复制代码 代码如下:

原先用json都是用做ajax管理的数目格式,后天同盟方给的接口再次来到的数量格式便是json的,那时还在想,那玩意再次回到的是object,能够一贯用做javascript里面包车型大巴,不过在php里面咋把那个目的转为数组呢?无可奈何半天,照旧决定去看手册。不看不明了,一看吓一跳,原本那玩意还恐怕有第三个参数,假若传为true的话,解码后的数据就成为数组了,Happy啊。

$data = array ('name' => 'abc', 'job' => 'programmer','a'=>array('aa','cc','bb'));
$data = var_dump($data,TRUE);
echo $data;

当array是叁个从0早先的连天数组时,json_encode出来的结果是一个由[]括起来的字符串

输出方式如下:

而当array是不从0早先还是不总是的数组时,json_encode出来的结果是三个由{}括起来的key-value格局的字符串

复制代码 代码如下:

 代码如下

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)

$test = array();
$test[] = 1;
$test[] = 1;
$test[] = 1;
DEBUG(json_encode($test));结果:
[1,1,1]

二 var_export
(PHP 4 >= 4.2.0, PHP 5)
var_export -- 输出或重回贰个变量的字符串表示
描述
mixed var_export ( mixed expression [, bool return] )

$test = array();
$test[] = 1;
$test[] = 1;
$test[] = 1;
unset($test[0]);
DEBUG(json_encode($test));

此函数重返关于传递给该函数的变量的构造消息,它和 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

{"1":1,"2":1}2.当字符串为[1,1,1] 这种情势时,json_decode私下认可剖析出来的结果是三个数组,

复制代码 代码如下:

当字符串为{"1":1,"2":1} 这种格局时,json_decode私下认可深入分析出来的结果是一个对象,此时得以设置它的第1个参数为true强制让它回到数组

$data = array ('name' => 'abc', 'job' => 'programmer','a'=>array('aa','cc','bb'));
$data = var_export($data,TRUE);
echo $data;

 

输出形式如下:

3.由于php不能够区分一维数组和二维数组,才会油可是生上述处境,因为使用json编码时推荐将第四个参数设置为true

复制代码 代码如下:


array (
'name' => 'abc',
'job' => 'programmer',
'a' =>
array (
0 => 'aa',
1 => 'cc',
2 => 'bb',
),
)

想把重新弄好的数量存在文件里,数据格式是数组,在此以前的办法都以serialize,抽出来的时候再反体系化,明日犯懒,就想能或不可能直接把数组存在文件里呢?
而是数组的格式实在倒霉拼,尤其是关周密组,那下标,笔者要是全知晓的话不得累死我?照旧问Google大哥吧。
var_export
(PHP 4 >= 4.2.0, PHP 5)
var_export — 输出或重回一个变量的字符串表示
描述
mixed var_export ( mixed $expression [, bool $return ] )

以下是补偿材质: error_log(var_export(yblog_mspconfiginit("ratings"),true));
主题素材原因
var_export必需重返合法的php代码, 也正是说,var_export再次回到的代码,能够直接当作php代码赋值个一个变量。而以此变量就能够博得和被var_export一样的类其他值。不过, 当变量类型为resource的时候, 是力无法支轻便copy复制的,所以, 当var_export的变量是resource类型时, var_export会返回NULL.

此函数重临关于传递给该函数的变量的组织消息,它和 var_dump() 类似,不相同的是其归来的表示是法定的 PHP 代码。
你能够经过将函数的第一个参数设置为 TRUE,从而重返变量的象征。
见到没?那么些函数,帅呆了,此前一贯用var_dump,不明了姓var的还也许有如此个东西,不错,不错的说。

难题意识
在跟踪yratings_get_targets的时候,

 代码如下

复制代码 代码如下:

$handle = fopen($file_name, 'w+');
fwrite($handle,'<?php'."n".'$datas= '.var_export($result).";n?>");
fclose($handle);

error_log(var_export(yblog_mspconfiginit("ratings"),true));老是打字与印刷出yblog_mspconfiginit(“ratings”)的回到是NULL

结果一用的时候,还是有标题,该函数把数组的从头到尾的经过给本人出口到页面上了,而文件内是甚都米有,那不闹啊吧?假如只是那样的话,作者为何用它啊?在页面上显得,笔者用<pre><pre>多爽啊。正苦恼呢,留心一看原本那一个函数也可能有第二个参数,成效和json_decode的同样,看来小编那大意的病痛还是非常惨痛滴。

造成作者觉着是爱莫能助创设和DB的连年,走错路了一天。

 

最后才意识,那是var_export和var_dump的分裂之一

 代码如下

这就是:

$handle = fopen($file_name, 'w+');
fwrite($handle,'<?php'."n".'$datas= '.var_export($result,true).";n?>");
fclose($handle);

主题素材原因
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);

$res = yblog_mspconfiginit("ratings");
var_dump($res);
var_export($res);

/*结果:resource(1) of type (yahoo_yblog)NULL*/

结果:

 

复制代码 代码如下:

再比如:

resource(1) of type (yahoo_yblog)

 代码如下

NULL再比如:

$res = fopen('status.html', 'r');
var_dump($res);
var_export($res);

复制代码 代码如下:

/*结果:resource(2) of type (stream)NULL*/

$res = fopen('status.html', 'r');
var_dump($res);
var_export($res);

var_export必需回到合法的php代码, 也正是说,var_export再次来到的代码,能够直接作为php代码赋值个一个变量。 而那些变量就能得到和被var_export同样的项指标值

结果:

唯独, 当变量类型为resource的时候, 是无力回天简单copy复制的,所以, 当var_export的变量是resource类型时, var_export会返回NULL

复制代码 代码如下:

resource(2) of type (stream)
NULL

您只怕感兴趣的小说:

  • 解析php中var_dump,var_export,print_r多少个函数的区分
  • php var_export与var_dump 输出的分歧
  • 解析用PHP实现var_export的事无巨细介绍
  • php中strtotime函数用法详解
  • php中opendir函数用法实例
  • php中explode函数用法深入分析
  • php中substr()函数参数表达及用法实例
  • php中chdir()函数用法实例
  • php函数serialize()与unserialize()用法实例
  • php的dl函数用法实例
  • php格式输出文件var_export函数实例

本文由计算机操作发布,转载请注明来源:php中var_export与var_dump的分化剖判