php如何将数组保存为文件的方法

  1. 直接用var_export写成return array(...);的php代码,然后读取的时候用require解析即可。
  2. 使用serialize函数序列化一个数组,然后读取的时候用unserialize反序列化
  3. 使用json_encode序列化一个数组,然后读取的时候用json_decode反序列化
  4. 使用其它的文件格式,比如yaml或者ini

 

//写入
function cache_write($name, $var, $values) {
    $cachefile = S_ROOT.'./data/data_'.$name.'.php';
    $cachetext = "     "if(!defined('CHECK_CODE')) exit('Access Denied');\r\n".
    '$'.$var.'='.arrayeval($values).
    "\r\n?>";
    if(!swritefile($cachefile, $cachetext)) {
        exit("File: $cachefile write error.");
    }
}
//数组转换成字串
function arrayeval($array, $level = 0) {
    $space = '';
    for($i = 0; $i <= $level; $i++) {
        $space .= "\t";
    }
    $evaluate = "Array\n$space(\n";
    $comma = $space;
    foreach($array as $key => $val) {
        $key = is_string($key) ? '\''.addcslashes($key, '\'\\').'\'' : $key;
        $val = !is_array($val) && (!preg_match("/^\-?\d+$/", $val) || strlen($val) > 12) ? '\''.addcslashes($val, '\'\\').'\'' : $val;
        if(is_array($val)) {
            $evaluate .= "$comma$key => ".arrayeval($val, $level + 1);
        } else {
            $evaluate .= "$comma$key => $val";
        }
        $comma = ",\n$space";
    }
    $evaluate .= "\n$space)";
    return $evaluate;
}
//写入文件
function swritefile($filename, $writetext, $openmod='w') {
    if(@$fp = fopen($filename, $openmod)) {
        flock($fp, 2);
        fwrite($fp, $writetext);
        fclose($fp);
        return true;
    } else {
        runlog('error', "File: $filename write error.");
        return false;
    }
}


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部