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

php下把数组保存为文件格式的实例应用

2010-02-08 00:00 1101 查看
我使用过两种办法:
第一种是数组序列化,简单,但是调用时比较麻烦一些;第二种是保存为标准的数组格式,保存时麻烦但是调用时简单。
第一种方法:
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 = "<?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; 
} 
}

调用方法很简单:
PHP代码
cache_write('file', 'arrayName', $array);

使用上形同标准的include格式:
PHP代码
@include ('./data/data_cache.php'); 
//数组重新排序 
sort($arrayName);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: