php下把數(shù)組保存為文件格式的實(shí)例應(yīng)用
更新時(shí)間:2010年02月08日 08:43:59 作者:
我們通常把一些常用的數(shù)據(jù)保存為數(shù)組格式方便調(diào)用,同時(shí)這也是緩存的重要方法。
我使用過(guò)兩種辦法:
第一種是數(shù)組序列化,簡(jiǎn)單,但是調(diào)用時(shí)比較麻煩一些;第二種是保存為標(biāo)準(zhǔn)的數(shù)組格式,保存時(shí)麻煩但是調(diào)用時(shí)簡(jiǎn)單。
第一種方法:
PHP代碼
$file="./cache/file.cache";
$array = array("color" => array("blue", "red", "green"),
"size" => array("small", "medium", "large"));
//緩存
file_put_contents($file,serialize($array));//寫(xiě)入緩存
//讀出緩存
$handle = fopen($file, "r");
$cacheArray = unserialize(fread($handle, filesize ($file)));
第二種方法:
比較復(fù)雜,先貼幾個(gè)函數(shù):
//寫(xiě)入
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.");
}
}
//數(shù)組轉(zhuǎn)換成字串
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;
}
//寫(xiě)入文件
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;
}
}
調(diào)用方法很簡(jiǎn)單:
PHP代碼
cache_write('file', 'arrayName', $array);
使用上形同標(biāo)準(zhǔn)的include格式:
PHP代碼
@include ('./data/data_cache.php');
//數(shù)組重新排序
sort($arrayName);
第一種是數(shù)組序列化,簡(jiǎn)單,但是調(diào)用時(shí)比較麻煩一些;第二種是保存為標(biāo)準(zhǔn)的數(shù)組格式,保存時(shí)麻煩但是調(diào)用時(shí)簡(jiǎn)單。
第一種方法:
PHP代碼
復(fù)制代碼 代碼如下:
$file="./cache/file.cache";
$array = array("color" => array("blue", "red", "green"),
"size" => array("small", "medium", "large"));
//緩存
file_put_contents($file,serialize($array));//寫(xiě)入緩存
//讀出緩存
$handle = fopen($file, "r");
$cacheArray = unserialize(fread($handle, filesize ($file)));
第二種方法:
比較復(fù)雜,先貼幾個(gè)函數(shù):
復(fù)制代碼 代碼如下:
//寫(xiě)入
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.");
}
}
//數(shù)組轉(zhuǎn)換成字串
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;
}
//寫(xiě)入文件
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;
}
}
調(diào)用方法很簡(jiǎn)單:
PHP代碼
復(fù)制代碼 代碼如下:
cache_write('file', 'arrayName', $array);
使用上形同標(biāo)準(zhǔn)的include格式:
PHP代碼
復(fù)制代碼 代碼如下:
@include ('./data/data_cache.php');
//數(shù)組重新排序
sort($arrayName);
相關(guān)文章
PHP 魔術(shù)變量和魔術(shù)函數(shù)詳解
這篇文章主要簡(jiǎn)單介紹了PHP 魔術(shù)變量和魔術(shù)函數(shù),以及使用示例,方便我們學(xué)習(xí)理解php魔術(shù)變量和魔術(shù)函數(shù),有需要的小伙伴參考下吧。2015-02-02PHP5.3以上版本安裝ZendOptimizer擴(kuò)展
這篇文章主要介紹了PHP5.3以上版本安裝ZendOptimizer擴(kuò)展的方法,十分細(xì)致,推薦給有需要的小伙伴參考下。2015-03-03在windows平臺(tái)上構(gòu)建自己的PHP實(shí)現(xiàn)方法(僅適用于php5.2)
本篇文章是對(duì)在windows平臺(tái)上構(gòu)建自己的PHP實(shí)現(xiàn)方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友可以參考下(僅適用于php5.2)2013-07-07ThinkPHP連接Oracle數(shù)據(jù)庫(kù)
本文給大家介紹的是如何使用thinkphp連接Oracle數(shù)據(jù)庫(kù)的方法和詳細(xì)步奏,并附上實(shí)例,非常的實(shí)用,有需要的小伙伴可以參考下2016-04-04PHP文字轉(zhuǎn)圖片功能原理與實(shí)現(xiàn)方法分析
這篇文章主要介紹了PHP文字轉(zhuǎn)圖片功能原理與實(shí)現(xiàn)方法,結(jié)合具體實(shí)例形式分析了php基于gd2擴(kuò)展庫(kù)生成圖片的相關(guān)配置及使用方法,需要的朋友可以參考下2017-08-08php表單請(qǐng)求獲得數(shù)據(jù)求和示例
這篇文章主要介紹了php表單請(qǐng)求獲得數(shù)據(jù)求和實(shí)現(xiàn)代碼,需要的朋友可以參考下2014-05-05Zend framework處理一個(gè)http請(qǐng)求的流程分析
Zend framework處理一個(gè)http請(qǐng)求的流程分析,有助于大家提高知識(shí)面。2010-02-02PHP使用 Imagick 擴(kuò)展實(shí)現(xiàn)圖片合成,圓角處理功能示例
這篇文章主要介紹了PHP使用 Imagick 擴(kuò)展實(shí)現(xiàn)圖片合成,圓角處理功能,結(jié)合具體實(shí)例形式分析了PHP使用 Imagick 擴(kuò)展的圖形處理、生成相關(guān)操作技巧,需要的朋友可以參考下2019-09-09