橘子味的心
PHP 常用功能函数
PHP 常用功能函数
发布于:

PHP 常用功能函数

  • 1. 生成指定长度的随机英文数字字符串

  • 2. 生成24位随机订单号, 年月日时分秒(14位) + 10位随机数

  • 3. 根据时间戳出计算到现在的文字时间

  • 4. 格式化数字(将一个整数进行单位转换: 万、亿)

  • 5. 构建 TP6 模型搜索器数据

  • 6. 路径中的目录如果不存在就执行创建目录

  • 7. 给文件生成新的随机文件名

    1. 生成指定长度的随机英文数字字符串

    /**
     * 生成指定长度的随机英文数字字符串
     * @param  int $length 字符串长度
     * @return string        成的随机字符串
     */
    function getRandString($length)
    {
        $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
        $randomString = '';
        for ($i = 0; $i < $length; $i++) {
            $randomString .= $characters[rand(0, strlen($characters) - 1)];
        }
        return $randomString;
    }

    2. 生成24位随机订单号, 年月日时分秒(14位) + 10位随机数


    /**
    * 生成24位随机订单号
    * 年月日时分秒(14位) + 10位随机数
    */
    function ordersn()
    {
           return date('YmdHis') . substr(implode(null, array_map('ord', str_split(substr(uniqid(), 7, 13), 1))), 0, 8) . mt_rand(10, 99);
    }
    /**
    * 随机生成18位数字订单号(18位:不包含前缀)
    * @param string $prefix 订单号前缀
    * @return string 随机订单号
    */
    function generateOrdersn(string $prefix = '')
    {
           return $prefix . date('YmdHis') . substr(implode(null, array_map('ord', str_split(substr(uniqid(), 7, 13), 1))), 0, 2) . mt_rand(10, 99);
    }

    3. 根据时间戳出计算到现在的文字时间


    /**
    * 将时间戳转为文字时间
    * @param integer $time
    */
    function wordTime(int $time)
    {
       $str = '';
       $time = intval(substr($time, 0, 10));
       $int = time() - $time;
       if ($int < 5){
           $str = sprintf('刚刚', $int);
       } elseif ($int < 60){
           $str = sprintf('%d秒前', $int);
       } elseif ($int < 3600) {
           $str = sprintf('%d分钟前', floor($int / 60));
       } elseif ($int < 86400){
           $str = sprintf('%d小时前', floor($int / 3600));
       } elseif ($int < 2592000) {
           $str = sprintf('%d天前', floor($int / 86400));
       } else {
           $str = date('Y-m-d H:i:s', $time);
       }
       return $str;
    }

    4. 格式化数字(将一个整数进行单位转换: 万、亿)


    /**
    * 整数格式化, 单位转换
    * @param integer $num
    */
    function formatNumber(int $num)
    {
       $num    = intval($num);
       $length = strlen($num);
       if ( $length > 8 ) {
           $decimal = rtrim(substr($num, -8, 2), '0');
           $decimal = $decimal ? '.' . $decimal : '';
           // 亿
           return substr($num, 0, strrpos($num, substr($num, -7)) - 1) . $decimal . '亿';
       } elseif ( $length > 4 ) {
           $decimal = rtrim(substr($num, -4, 2), '0');
           $decimal = $decimal ? '.' . $decimal : '';
           // 万
           return substr($num, 0, strrpos($num, substr($num, -3)) - 1) . $decimal . 'W';
       } else {
           // 千
           return $num;
       }
    }

    5. 构建 TP6 模型搜索器数据


    使用示例

    $where = ['id' => 1, 'name' => '张三'];//查询条件
    $where = where_filter($where, $fields);//构建搜索器参数
    $data = User::withSearch($fields, $where)->select();

    自定义函数, 用于TP6搜索器

    /**
    * 去掉数组空字符串,返回所有键
    *
    * @param array $where
    * @param array $keys
    * @return array
    */
    function where_filter(array $where, &$keys)
    {
       // 去掉数组里的空值 (会正常返回:false、0)
       $where = array_filter($where, function ($k) {
           return ($k === '' || $k === null) ? false : true;
       });
       // 拿到所有键
       $keys = array_keys($where);
       // 返回数组
       return $where;
    }

    6. 路径中的目录如果不存在就执行创建目录


    /**
    * 路径中的目录不存在就创建目录
    */
    function createDir($path)
    {
       if (!file_exists(dirname($path))) mkdir(dirname($path), 0777, true);
    }

    7. 给文件生成新的随机文件名

    /**
     * 给文件生成新的随机文件名
     */
    function getRandName($file)
    {
        return md5(microtime(true) . mt_rand(1, 1e9)) . '.' . pathinfo($file, PATHINFO_EXTENSION);
    }
    阅读 0

    分类

      热门排行