PHP实用函数集合

实用函数集合

<?php

if (!function_exists('number_random')) {
    /**
     * 生成随机数字串
     *
     * @param int $length
     * @return string
     */
    function number_random($length = 6)
    {
        $result = '';
        for ($i = 0; $i < $length; $i++) {
            $result .= mt_rand(0, 9);
        }

        return $result;
    }
}

if (!function_exists('string_random')) {
    /**
     * 生成随机字符串
     *
     * @param int $length
     * @return string
     */
    function string_random($length = 6)
    {
        $result = '';
        for ($i = 0; $i < $length; $i++) {
            $rand = mt_rand(1, 3);
            switch ($rand) {
                case 1:
                    $result .= mt_rand(0, 9);
                    break;
                case 2:
                    $result .= chr(mt_rand(65, 90));
                    break;
                default:
                    $result .= chr(mt_rand(97, 122));
                    break;
            }
        }

        return $result;
    }
}

if (!function_exists('get_order_number')) {
    /**
     * 生成订单号
     *
     * @param int $length
     * @return string
     */
    function get_order_number($length = 32)
    {
        $date = date('YmdHis');
        $micro = explode('.', microtime(true))[1];
        $rand = string_random($length - (strlen($date) + strlen($micro)));

        return $date . $micro . $rand;
    }
}

if (!function_exists('check_bank_card')) {
    /**
     * 验证银行卡号
     *
     * @param string $card
     * @return bool
     */
    function check_bank_card(string $card)
    {
        $arr_no = str_split($card);
        $last_n = $arr_no[count($arr_no) - 1];
        krsort($arr_no);
        $i = 1;
        $total = 0;
        foreach ($arr_no as $n) {
            if ($i % 2 == 0) {
                $ix = $n * 2;
                if ($ix >= 10) {
                    $nx = 1 + ($ix % 10);
                    $total += $nx;
                } else {
                    $total += $ix;
                }
            } else {
                $total += $n;
            }
            $i++;
        }
        $total -= $last_n;
        $total *= 9;

        return $last_n == ($total % 10);
    }
}

if (!function_exists('blocking_lock')) {
    /**
     * 阻塞锁
     *
     * @param string $lock_name 锁名字
     * @param int $valid 有效秒数
     * @return mixed
     */
    function blocking_lock(string $lock_name, $valid = 3600)
    {
        $lock_key = 'blocking_lock';
        while ($exp = Redis::hget($lock_key, $lock_name)) {
            if ($exp < microtime(true)) {
                Redis::hdel($lock_key, $lock_name);
            }
            usleep(10);
        }

        return Redis::hset($lock_key, $lock_name, microtime(true) + $valid);
    }
}

if (!function_exists('blocking_unlock')) {
    /**
     * 释放阻塞锁
     *
     * @param string $lock_name
     * @return mixed
     */
    function blocking_unlock(string $lock_name)
    {
        $lock_key = 'blocking_lock';

        return Redis::hdel($lock_key, $lock_name);
    }
}

if (!function_exists('random_color')) {
    /**
     * 随机十六进制颜色
     *
     * @return string
     */
    function random_color()
    {
        $str = '#';
        for ($i = 0; $i < 6; $i++) {
            $randNum = rand(0, 15);
            switch ($randNum) {
                case 10:
                    $randNum = 'a';
                    break;
                case 11:
                    $randNum = 'b';
                    break;
                case 12:
                    $randNum = 'c';
                    break;
                case 13:
                    $randNum = 'd';
                    break;
                case 14:
                    $randNum = 'e';
                    break;
                case 15:
                    $randNum = 'f';
                    break;
            }
            $str .= $randNum;
        }

        return $str;
    }
}

if (!function_exists('get_hour_history')) {
    /**
     * 获取当日历史小时
     *
     * @return array
     */
    function get_hour_history()
    {
        $history = [];
        for ($i = 0; $i <= date('H'); $i++) {
            $history[] = $i;
        }

        return $history;
    }
}

关于PHP实用函数集合的文章就分享到这,如果对你有帮助欢迎继续关注我们哦

本文来自投稿,不代表重蔚自留地立场,如若转载,请注明出处https://www.cwhello.com/44689.html

如有侵犯您的合法权益请发邮件951076433@qq.com联系删除

(0)
php学习php学习订阅用户
上一篇 2022年6月27日 00:30
下一篇 2022年6月27日 00:31

相关推荐

  • 使用PHP实现消息队列的开发。

    随着现代互联网应用对高并发、高吞吐量和高可靠性的要求越来越高,消息队列作为一种异步解耦系统架构方式越来越被应用在互联网领域的各个方面。其原理是先将消息发送到消息队列中,等待异步消费,从而达到解耦的目…

    2023年5月28日
    01
  • if判断杜绝手误造成的bug

    在代码时有可能会出出运算符写错的现象,if判断中经常出现的是把 "=="写成 "=", 那么if($length=4)就会一直返回true,运行代码会就会出现一些末知的bug或是另一种结果. 怎么预防手误造成的bug? 我们可以把值写在 == …

    2018年4月27日
    0433
  • Redis和PHP的速度对比。

    Redis是一款高性能的缓存数据库,被广泛地用于提升Web应用程序的性能。它以其高速读取和写入数据的能力,以及良好的可扩展性而受到Web开发人员的青睐。而PHP是一门流行的Web编程语言,以其易学易用、开发效率高等特…

    2023年5月21日
    02
  • 如何访问成员属性

    如何访问成员属性 类名的规范说明 类名不区分大小写. 类名命名规范 关于函数,变量,常量,接口等等的命名规范,请参考手册. 对象传递方式(重点, 难点) 先请大家看一段代码,从而引起思考 注意当 对象传递方式是 $p…

    2018年4月9日
    0190
  • php构造函数的小结

    构造函数的小结 类定义的进一步完善

    2018年4月11日
    0185
  • PHP与数据备份的集成。

    当今互联网应用越来越成熟,各种业务处理都需要用到数据库来保存数据。而随着数据量不断增加,数据备份变得愈发重要。在PHP应用程序中,数据备份是必须考虑的问题之一,因此PHP与数据备份的集成也变得至关重要。首…

    2023年5月21日
    00
  • PHP中如何进行推荐系统和深度学习。

    随着互联网技术的快速发展,越来越多的网站和应用开始注重推荐系统的开发和使用,以提高用户体验和满足个性化需求。而在推荐系统的实现中,深度学习更是成为了一个热门的技术方向。本文将介绍PHP中如何进行推荐系统…

    2023年5月23日
    06
  • 说说wamp怎么打开。

    WampServer是一个用于Windows操作系统的Web开发环境,它集成了Apache、MySQL和PHP等常用的Web开发工具,在WampServer中开启GD库,可以让我们使用PHP进行图像处理和生成动态图像,下面是开启GD库的步骤: 1. 确保你…

    2024年6月28日
    01

联系我们

QQ:951076433

在线咨询:点击这里给我发消息邮件:951076433@qq.com工作时间:周一至周五,9:30-18:30,节假日休息