• 技术文章 >php教程 >php手册

    php下把数组保存为文件格式的实例应用

    2016-06-13 12:19:14原创510

    我使用过两种办法:
    第一种是数组序列化,简单,但是调用时比较麻烦一些;第二种是保存为标准的数组格式,保存时麻烦但是调用时简单。
    第一种方法:
    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)));


    第二种方法:
    比较复杂,先贴几个函数:

    复制代码 代码如下:


    //写入
    function cache_write($name, $var, $values) {
    $cachefile = S_ROOT.'./data/data_'.$name.'.php';
    $cachetext = ""if(!defined('CHECK_CODE')) exit('Access Denied');\r\n".
    '$'.$var.'='.arrayeval($values).
    "\r\n?>";
    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\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;
    }
    //写入文件
    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);

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    上一篇:php date与gmdate的获取日期的区别 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • php mysql 数据库类• PHP代码:Http断点续传的实现例子• 基于php实现七牛抓取远程图片• php5.3,5.4,5.5,5.6 中新特性• ThinkPHP控制器里javascript代码不能执行的解决方法,thinkphpjavascript
    1/1

    PHP中文网