phpで配列をファイル形式に保存するインスタンスアプリケーション

2776 ワード

私は2つの方法を使ったことがあります.
1つ目は配列のシーケンス化で、簡単ですが、呼び出すときは面倒です.2つ目は、標準的な配列フォーマットとして保存され、保存は面倒ですが、呼び出すのは簡単です.
1つ目の方法:
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)));

2つ目の方法:
複雑なので、まずいくつかの関数を貼ります.
 
  
//
function cache_write($name, $var, $values) {
$cachefile = S_ROOT.'./data/data_'.$name.'.php';
$cachetext = "". "if(!defined('CHECK_CODE')) exit('Access Denied');\r
".
'$'.$var.'='.arrayeval($values).
"\r
?>";
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
$space(
";
$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 = ",
$space";
}
$evaluate .= "
$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);