我有一个使用var_export()
写入文件的数组。每次脚本启动时我都会重新加载数组。但是,每当我尝试引用数组中的变量时它返回'a',我可以做print_r()
并看到数组就好了,我只是无法访问我想要的变量。这是保存的输出:
array (
'timestamp' => '1283882964',
'files_submitted' => 2943,
'errors' => array (
'/WebFS/xx.doc' => array (
'STATUS' => 400,
),
'WebFS/xx.doc.doc' => array (
'STATUS' => 400,
),
)
)
以下是我用来保存的代码:
function add_log_entry($filename,$return_arr) {
//$timestamp = strval(mktime());
$return_arr['timestamp'] = mktime();
$return_str = var_export($return_arr,true);
return file_put_contents($filename, $return_str);
}
以下是我用来回忆数组的代码:
function get_log_entry($filename) {
$var_str = file_get_contents($filename);
eval("\$return_var = \$var_str;");
die($return_var['timestamp']);
return $return_var;
}
您可以看到我将die()
放入召回代码中,这就是“a”的来源。
感谢谁回应。
本
答案 0 :(得分:2)
<击>
使用php函数serialize
和unserialize
,不需要使用var_export
和eval
编写自己的hack(除安全隐患外)
示例代码:
file_put_contents($filename, serialize($array));
$array = unserialize(file_get_contents($filename));
击> <击> 撞击>
使用serialize
/ unserialize
可能会带来安全风险。要序列化简单数组/数据结构,最好使用json_encode
函数:
file_put_contents($filename, json_encode($array));
$array = json_decode(file_get_contents($filename), TRUE);