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 | } |