很多时间我们需要把php生成的php代码保存到php文件里面,像如果利用到缓存时一些基础数据就直接保存到了一个指定的php缓存文件了,下面我们来看看实例。
- <?php
- 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 "<?phpn";
- function echoArr($arr,$arrName){
- $arrCount=count($arr);$i==0;
- foreach($arr as $key=>$value){
- ++$i;
- if(is_array($value)){
- echo "n".(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 "n?>";
- $file=fopen($strName.'.arr.php','w');
- fwrite($file,ob_get_contents());
- fclose($file);
- ob_clean();
- return true;
- }
- ?>
实例代码如下:
- <?php
-
- $hello=array(1=>'test',2=>array('hello123'));
- cacheArr($hello);
- unset($hello);
-
- require 'hello.arr.php';
- print_r($hello);
- ?>