关闭

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

346人阅读 评论(0) 收藏 举报
  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 = "<?php\r\n".
    "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;
    }
}

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:39030次
    • 积分:605
    • 等级:
    • 排名:千里之外
    • 原创:16篇
    • 转载:39篇
    • 译文:0篇
    • 评论:0条