php 框架thinkphp里自写的常用函数

来源:互联网 发布:盘古排序指标源码 编辑:程序博客网 时间:2024/05/22 05:26
背景:在应用tp的时候,将一些可能常用的函数,收集了下转移到了common目录下的function.php文件里作为公共函数便于调用。
<?php/** * 验证码检查 */function check_verify($code, $id = ""){    $verify = new \Think\Verify();    return $verify->check($code, $id);}/** * 将返回的数据集转换成树 * @param  array   $list  数据集 * @param  string  $pk    主键 * @param  string  $pid   父节点名称 * @param  string  $child 子节点名称 * @param  integer $root  根节点ID * @return array          转换后的树 */function list_to_tree($list, $pk = 'id', $pid = 'pid', $child = '_child', $root=0) {    $tree = array();// 创建Tree    if(is_array($list)) {        // 创建基于主键的数组引用        $refer = array();        foreach ($list as $key => $data) {            $refer[$data[$pk]] =& $list[$key];        }        foreach ($list as $key => $data) {            // 判断是否存在parent            $parentId = $data[$pid];            if ($root == $parentId) {                $tree[$data[$pk]] =& $list[$key];            }else{                if (isset($refer[$parentId])) {                    $parent =& $refer[$parentId];                    $parent[$child][] =& $list[$key];                }            }        }    }    return $tree;}/** * 将树形结构转换为带层级的列表 *  * @param array $tree * @param int $_level * @param string $name * @param string $description * @return array */function treeToList($tree, $_level = 0){$ret = array();    foreach ($tree as $val) {    $arr = array();    $arr['id'] = $val['id'];    $arr['name'] = $val['name'];    $arr['description'] = $val['description'];    $arr['_level'] = $_level;            if (isset($val['_child']) && !empty($val['_child'])) { //有子元素            $children = treeToList($val['_child'], $_level + 1);            // 将所有字分类组合到一个数组            $_ret = array_merge(array($arr), $children);        } else {            $_ret = array($arr);        }        // 此处合并是防止多个顶级分类合并不到一个数组        $ret = array_merge($ret, $_ret);    }    return $ret;}/** *  * 用于tp上传重新生成文件名 * 'saveName' => array('get_file_name',array('__FILE__')),//array('uniqid',''), * @param string $name (tp上传类里__FILE__) */function get_file_name($name){$extend  =  pathinfo ( $name );$extend_name = '.'.$extend[ "extension" ];$name = str_replace($extend_name, "", $name);return $name.'_'.date("YmdHis");}/** *  * 二维数组按照指定key排序 * @param array $arr 要进行排序的数组 * @param string $keys 排序数组指定的key * @param string $type 排序的方式(默认升序) * @param int $limit 排序完成后取出的数组长度(默认0是表示全取) * @return array */function array_sort($arr,$keys,$type='asc',$limit=0){$keysvalue = array(); //临时存储数组索引和指定key值的一维数组$new_array = array(); //排序完成后的新数组// 从数组中取出索引和指定keys对应的值组成新的数组foreach ($arr as $k=>$v){$keysvalue[$k] = $v[$keys];}// 对新的数组按照排序规则进行排序if($type == 'asc'){asort($keysvalue);}else{arsort($keysvalue);}reset($keysvalue);// 按照排序后的数组$keysvalue索引和要排序数组$arr索引相同设置返回数组值if ($limit > 0){$i = 0;foreach ($keysvalue as $k=>$v){if ($i < $limit){$new_array[$k] = $arr[$k];}else{break;}$i ++;}}else{foreach ($keysvalue as $k=>$v){$new_array[$k] = $arr[$k];}}return $new_array;}
备注:因为之前的项目没有做这种整理记录,到现在总是需要一次次的写,为防止以后出现这种情况,决定从现在开始收集记录。
0 0