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];
}


你可能感兴趣的:(PHP,php)