文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>将数组写入缓存

将数组写入缓存

时间:2010-08-22  来源:yueming

<?php
/**
* 将一个数组写入文件
*
* $file 文件路径
* $array 需要写入文件的数组
* $arrayName 缓存文件中该数组的名称
*/
function arrayToFile($file,$array,$arrayName)
{
file_put_contents($file,'<?php $'.$arrayName.'='.arrayToStr($array).'; ?>');
}
/**
* 将一个数组还原为字符串
*
* $array 数组
*/
function arrayToStr($array)
{
if (is_string($array)) return '\''.str_replace('\'','\\\'',$array).'\'';
if (is_numeric($array)) return $array;
if (is_bool($array)) return $array ? 'true' : 'false';
if (is_null($array)) return '\'\'';
$arrayStr = '';
foreach ($array as $key => $value)
{
$arrayStr .= ','.(is_string($key) ? '\''.$key.'\'' : $key).'=>'.arrayToStr($value);
}
return 'array('.substr($arrayStr,1).')';
}
?>


  uchome是用了下面的函数干的。    

/**
 * 数组转换成字串
 * @param array $array 要转换的数组
 * @param int $level 数组的层次
 * @return string 返回转换后的字符串
 */
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) {
                //addcslashes($key, '\'\\');只对'与\进行转义
        $key = is_string($key) ? '\''.addcslashes($key, '\'\\').'\'' : $key;
                //如果$key不是数字,则设置为字符串,如果是数字,则直接取数字
        $val = !is_array($val)&&(!preg_match("/^\-?\d+$/", $val) || strlen($val) > 12 || substr($val, 0, 1)=='0') ? '\''.addcslashes($val, '\'\\').'\'' : $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;
}


相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载