var_export() 函数返回关于传递给该函数的变量的结构信息,它和 var_dump() 类似,不同的是其返回的表示是合法的 PHP 代码。var_export必须返回合法的php代码, 也就是说,var_export返回的代码,可以直接当作php代码赋值个一个变量。 而这个变量就会取得和被var_export一样的类型的值。看下面一个简单的例子:
1 |
<?php |
2 |
|
3 |
$arr = array ( 1 , 2 , array ( "apple" , "banana" , "orange" ));
|
4 |
var_export ( $arr );
|
5 |
|
6 |
?> |
程序输出:
01 |
array (
|
02 |
0 => 1,
|
03 |
1 => 2,
|
04 |
2 =>
|
05 |
array (
|
06 |
0 => 'apple' ,
|
07 |
1 => 'banana' ,
|
08 |
2 => 'orange' ,
|
09 |
),
|
10 |
) |
注意,上面的输出是合法的PHP代码。假如用var_dump(),则输出为:
01 |
array (3) {
|
02 |
[0]=>
|
03 |
int(1)
|
04 |
[1]=>
|
05 |
int(2)
|
06 |
[2]=>
|
07 |
array (3) {
|
08 |
[0]=>
|
09 |
string(5) "apple"
|
10 |
[1]=>
|
11 |
string(6) "banana"
|
12 |
[2]=>
|
13 |
string(6) "orange"
|
14 |
}
|
15 |
} |
可以通过将函数的第二个参数设置为 TRUE,从而返回变量的表示。
1 |
<?php |
2 |
|
3 |
$v = 'nowamagic' ;
|
4 |
$rs = var_export ( $v , TRUE );
|
5 |
|
6 |
echo $rs ;
|
7 |
?> |
程序运行结果:
1 |
'nowamagic' |
注意两点:
- var_export()会一直保留着结构化形式存储数据.
- 但是特别请记住:此时的变量值的类型已是字符串了($var),不能再以数组的方式取出里面的值来。
在PHPCMS的源码里,可以看到很多配置的参数都用数组记录的,包括它们的频道、内容等等。
01 |
function cache_write( $file , $string , $type = 'array' )
|
02 |
{ |
03 |
if ( is_array ( $string ))
|
04 |
{
|
05 |
$type = strtolower ( $type );
|
06 |
if ( $type == 'array' )
|
07 |
{
|
08 |
$string = "<?php\n return " .var_export( $string ,TRUE). ";\n?>" ;
|
09 |
}
|
10 |
elseif ( $type == 'constant' )
|
11 |
{
|
12 |
$data = '' ;
|
13 |
foreach ( $string as $key => $value ) $data .= "define('" . strtoupper ( $key ). "','" .
|
14 |
addslashes ( $value ). "');\n" ;
|
15 |
$string = "<?php\n" . $data . "\n?>" ;
|
16 |
}
|
17 |
}
|
18 |
$strlen = file_put_contents (PHPCMS_CACHEDIR. $file , $string );
|
19 |
chmod (PHPCMS_CACHEDIR. $file , 0777);
|
20 |
return $strlen ;
|
21 |
} |