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

背景:在应用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;
}
备注:因为之前的项目没有做这种整理记录,到现在总是需要一次次的写,为防止以后出现这种情况,决定从现在开始收集记录。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章