php怎么把数组保存为文件格式?实例代码

发布时间:2019-11-07编辑:脚本学堂
本文介绍了php数组保存为文件格式的方法,一种变通的php文件缓存方式,需要的朋友参考下。

在实现php缓存的多种方法中,有一种是把数据保存为php数组格式,以方便重复调用。

两种办法:
第一种是数组序列化,简单,调用麻烦;
第二种是保存为标准的数组格式,保存时麻烦,调用简单。

第一种方法:
 

复制代码 代码示例:
$file="./cache/file.cache";  
$array = array("color" => array("blue", "red", "green"),  
               "size"  => array("small", "medium", "large"));  
//缓存  
file_put_contents($file,serialize($array));//写入缓存      
//读出缓存  
$handle = fopen($file, "r");  
$cacheArray = unserialize(fread($handle, filesize ($file)));  

第二种方法:

先贴几个函数:
 

复制代码 代码示例:
//写入  
function cache_write($name, $var, $values) {  
    $cachefile = S_ROOT.'./data/data_'.$name.'.php';  
    $cachetext = "<?phprn".  
        "if(!defined('CHECK_CODE')) exit('Access Denied');rn".  
        '$'.$var.'='.arrayeval($values).  
        "rn?>";  
    if(!swritefile($cachefile, $cachetext)) {  
        exit("File: $cachefile write error.");  
    }  
}  
//数组转换成字串  
function arrayeval($array, $level = 0) {  
    $space = '';  
    for($i = 0; $i <= $level; $i++) {  
        $space .= "t";  
    }  
    $evaluate = "Arrayn$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;  
    }  
}

调用:
 

cache_write('file', 'arrayName', $array); 

include格式:
 

@include ('./data/data_cache.php');  
//数组重新排序  
sort($arrayName);