var_export()
返回关于传递给该函数的变量的结构信息
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 }