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;
}
備註:因爲之前的項目沒有做這種整理記錄,到現在總是需要一次次的寫,爲防止以後出現這種情況,決定從現在開始收集記錄。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章