您的位置:首页 > 编程语言 > PHP开发

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

2014-07-24 10:54 309 查看
背景:在应用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;
}
备注:因为之前的项目没有做这种整理记录,到现在总是需要一次次的写,为防止以后出现这种情况,决定从现在开始收集记录。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: