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