var_export 与 var_dump的不同

[ 2012-12-10 09:25:33 | 作者: admin ]
字号: | |
var_export() 函数返回关于传递给该函数的变量的结构信息,它和 var_dump() 类似,不同的是其返回的表示是合法的 PHP 代码。var_export必须返回合法的php代码, 也就是说,var_export返回的代码,可以直接当作php代码赋值个一个变量。 而这个变量就会取得和被var_export一样的类型的值。看下面一个简单的例子:
<?php
  
  $arr = array ( 1 , 2 , array ( "apple" , "banana" , "orange" ));
  var_export ( $arr );
  
?>
程序输出:

array (
    0 => 1,
    1 => 2,
    2 =>
    array (
        0 => 'apple',
        1 => 'banana',
        2 => 'orange',
    ),
)
注意,上面的输出是合法的PHP代码。假如用var_dump(),则输出为:

array(3) {
    [0]=>
    int(1)
    [1]=>
    int(2)
    [2]=>
    array(3) {
        [0]=>
        string(5) "apple"
        [1]=>
        string(6) "banana"
        [2]=>
        string(6) "orange"
    }
}
可以通过将函数的第二个参数设置为 TRUE,从而返回变量的表示。

<?php
  
  $v = 'nowamagic';
  $rs = var_export ( $v, TRUE );
  
  echo $rs;
?>
程序运行结果:

'nowamagic'
注意两点:

var_export()会一直保留着结构化形式存储数据.
但是特别请记住:此时的变量值的类型已是字符串了($var),不能再以数组的方式取出里面的值来。
在PHPCMS的源码里,可以看到很多配置的参数都用数组记录的,包括它们的频道、内容等等。

function cache_write($file, $string, $type = 'array')
{
         if(is_array($string))
         {
                $type = strtolower($type);
                if($type == 'array')
                {
                     $string = "<?php\n return ".var_export($string,TRUE).";\n?>";
                }
                elseif($type == 'constant')
                {
                     $data='';
                     foreach($string as $key => $value) $data .= "define('".strtoupper($key)."','".
addslashes($value)."');\n";
                     $string = "<?php\n".$data."\n?>";
                }
         }
         $strlen = file_put_contents(PHPCMS_CACHEDIR.$file, $string);
         chmod(PHPCMS_CACHEDIR.$file, 0777);
         return $strlen;
}
评论Feed 评论Feed: http://blog.xg98.com/feed.asp?q=comment&id=1923

这篇日志没有评论。

此日志不可发表评论。