phpで配列をファイルに格納する実装コード

2151 ワード

コードを初めて共有します.(書き方が下手だ..緊張納緊張納)
phpの配列は非常に強く、データベースに格納せずにファイルに直接書くデータもあり、使用するときは直接requireします.
(実際には配列をファイルに存在させる機能がありますが、共有するコードは実際のアプリケーションとは少し違います)
 
  
function cacheArr(&$data){
if(!$data)throw new Exception(' ');
foreach($GLOBALS as $key=>$value){
$str=$GLOBALS[$key];
$GLOBALS[$key]='changed';
if($data=='changed'){
$strName=$key;
break;
}
$GLOBALS[$key]=$str;
}
ob_clean();
ob_start();
echo ""; function echoArr($arr,$arrName){
$arrCount=count($arr);$i==0;
foreach($arr as $key=>$value){
++$i;
if(is_array($value)){
echo "
".(is_numeric($key)?$key:'\''.$key.'\'').'=>array(';
echoArr($value,$arrName.(is_numeric($key)?'['.$key.']':'[\''.$key.'\']'));
if($i!=$arrCount)echo '),';
else echo ')';
continue;
}
if($i!=$arrCount)echo ((is_numeric($key))?$key:'\''.$key.'\'').'=>'.(is_numeric($value)?$value:'\''.$value.'\'').',';
else echo ((is_numeric($key))?$key:'\''.$key.'\'').'=>'.(is_numeric($value)?$value:'\''.$value.'\'');
}
}
echo '$'.$strName.'=array(';
echoArr($data,'');
echo ');';
echo "
?>";
$file=fopen($strName.'.arr.php','w');
fwrite($file,ob_get_contents());
fclose($file);
ob_clean();
return true;
}
?>
//
$hello=array(1=>'test',2=>array('hello123'));
cacheArr($hello);
unset($hello);
//
require 'hello.arr.php';
print_r($hello);
?>

テスト中に変数の問題に注意します.定義されたグローバル変数を含める