您的位置:首页 > 编程语言 > PHP开发

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

2013-12-03 15:51 344 查看
直接用
var_export
写成
return array(...);
的php代码,然后读取的时候用
require
解析即可。
使用
serialize
函数序列化一个数组,然后读取的时候用
unserialize
反序列化
使用
json_encode
序列化一个数组,然后读取的时候用
json_decode
反序列化
使用其它的文件格式,比如
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;

    }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: