数组分页
function page_array($count,$page,$array,$order){
global $countpage; #定全局变量
$page=(empty($page))?'1':$page; #判断当前页面是否为空 如果为空就表示为第一页面
$start=($page-1)*$count; #计算每次分页的开始位置
if($order==1){
$array=array_reverse($array); #函数返回翻转顺序的数组
}
$totals=count($array);
$countpage=ceil($totals/$count); #计算总页面数
$pagedata=array();
$pagedata=array_slice($array,$start,$count);
return $pagedata; #返回查询数据
}
二维数组分组
function array_group_by($arr, $key)
{
$grouped = [];
foreach ($arr as $value) {
$grouped[$value[$key]][] = $value;
}
if (func_num_args() > 2) {
$args = func_get_args();
foreach ($grouped as $key => $value) {
$parms = array_merge([$value], array_slice($args, 2, func_num_args()));
$grouped[$key] = call_user_func_array('array_group_by', $parms);
}
}
return $grouped;
}
遍历目录结构
function my_dir($dir) {
$files = array();
$e=mb_detect_encoding($dir,array('GB2312','GBK','UTF-8'));
$dir = mb_convert_encoding($dir,'GBK', $e);
if(@$handle = opendir($dir)) { //注意这里要加一个@,不然会有warning错误提示:)
while(($file = readdir($handle)) !== false) {
if($file != ".." && $file != ".") { //排除根目录;
$filename=$dir."/".$file;
if(is_dir($filename)) { //如果是子文件夹,就进行递归
$files[$file] =$this->my_dir($filename);
} else {
$e=mb_detect_encoding($file,array('GB2312','GBK','UTF-8'));
$file = mb_convert_encoding($file,'GBK', $e);
$files[] = $file;
}
}
}
closedir($handle);
return $files;
}
}
读取文件并转码
function auto_read($file, $charset='UTF-8') {
$list = array('GBK','UTF-8','UTF-16LE','UTF-16BE','ISO-8859-1');
$handle=fopen($file,"r");
$str=fread($handle,filesize($file));
foreach ($list as $item) {
$tmp = mb_convert_encoding($str, $item, $item);
if (md5($tmp) == md5($str)) {
return mb_convert_encoding($str, $charset, $item);
}
}
return "";
}