<?php
/**
* Created by PhpStorm.
* User : Royeecai
* 公众号: 扣丁曼
* Email:[email protected]
* Date : 2019/8/11
* Time : 20:39
*/
/**
* 无限极分类方式获取数据
* @parem $array 数组
* @parem $pid ,最高级别,默认为0,输出从pid 级别的数据
* @parem $level 层级,默认0
*
* */
function getTreeWithoutChild($arr,$pid=0,$level=0)
{
//创建一个空数组,用来存储存在等级关系的数据的
static $newArr=[];
foreach ($arr as $value){
//如果parent_id为0,则进入if判断
if ($value['pid'] == $pid){
//给数组$category添加键为level,值为$level的元素
$value['level']=$level;
//将数组$category存到$newArr里面去,$newArr变为二维数组了
$newArr[] = $value;
//当有parent_id==id时,则是下一级数据,重复进行只要有parent_id==id则执行此方法
getTreeWithoutChild($arr,$value['id'],$level+1);
}
}
return $newArr;
}
//随机产生密码前缀
function random()
{
$str="qwertyuiopasdfghjklzxcvb1234567890";
//拼接随机后的值
$randStr ="";
for ($i=0;$i<6;$i++){
//随机截取的位置
$num=mt_rand(0,strlen($str)-1);
//拼接截取出来的值
$randStr.=substr($str,$num,1);
}
return $randStr;
}
/**
* @param array $array
* @return array
* @desc 根据数组将数组组合成带有孩子节点的数组
* 如$arr = [['id'=>1,pid=>0,'title'=>'nihao'],['id'=>2,pid=>1,'title'=>'son']]
* 返回 [['id'=>1,pid=>0,'title'=>'nihao','children'=>['id'=>2,pid=>1,'title'=>'son']]]
*/
function getTree(Array $array)
{
//第一步 构造数据
$items = array();
foreach($array as $value)
{
$items[$value['id']] = $value;
}
//第二部 遍历数据 生成树状结构
$tree = array();
foreach($items as $key => $value)
{
//如果pid这个节点存在
if(isset($items[$value['pid']]))
{
//把当前的$value放到pid节点的children中 注意 这里传递的是引用
$items[$value['pid']]['children'][] = &$items[$key];
}
else
{
$tree[] = &$items[$key];
}
}
return $tree;
}
/**
* desc 判断字符串是否在数组中 成功返回1失败返回0;
* @param unknown $str 判定的字符串
* @param unknown $arr
* @return number
*/
function forInArray($str,$arr)
{
if(!is_array($arr))
{
return 0;
}
return in_array($str,$arr) ? 1 : 0;
}
/**
* @param $str
* @param int $start
* @param int $length
* @return string
* @des 中文截取字符串
*/
function forSubstr($str,$start=0,$length=10)
{
if($str!='')
{
if(mb_strlen($str,"utf8")>$length)
{
return mb_substr($str,$start,$length,"utf8").'..';
}
else
{
return $str;
}
}
}
/**
* 创建文件夹递归创建
* @return bool
*/
function createDirectory($dir)
{
//$dir = iconv("UTF-8","gb2312", $dir );
return is_dir ( $dir ) or Directory(dirname($dir)) and mkdir ( $dir , 0777);
}
/**
* @desc 获取文件后缀名
* @return string
*/
function getExt($file){
return '.'.end(explode(".",$file));
}
/**
* @param $userid
* @param bool $isfile
* @param string $prefix
* @return string
*/
function createFileName($userid,$isfile=true,$prefix='data/ftpdata/')
{
if($isfile)
{
return $prefix.$userid.DIRECTORY_SEPARATOR.date('Ymd').DIRECTORY_SEPARATOR.time().substr(uniqid(),-4);
}
else
{
return $prefix.$userid.DIRECTORY_SEPARATOR.date('Ymd');
}
}
//转换单位
/**
* @desc 格式化磁盘空间大小函数
* 自动显示为kb MB GB等
* @return string
*/
function formatSize($fileSize) {
$size = sprintf("%u", $fileSize);
if($size == 0) {
return("0 Bytes");
}
$sizename = array(" Bytes", " KB", " MB", " GB", " TB", " PB", " EB", " ZB", " YB");
return round($size/pow(1024, ($i = floor(log($size, 1024)))), 2) . $sizename[$i];
}