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运行原理和环境的搭建。

    php语言运行原理 客户端技术:                                                服务器端技术: html                                    web服务器软件:            服务器端语言:        数据库: css       …

    2020年11月13日 PHP自学教程
    0352
  • 如何在PHP中使用OOP框架。

    随着互联网技术的快速发展,PHP已经成为了Web开发领域中最流行的编程语言之一。使用面向对象编程(OOP)框架可以让我们的PHP应用更加模块化、可重用、可维护、可扩展,这也是以下所提到的几个框架比较成功的原因之一…

    2023年5月22日
    04
  • PHP之钩子

    PHP 提供的钩子PHP 和 Zend Engine 为扩展提供了许多不同的钩子,这些扩展允许扩展开发人员以 PHP userland 无法提供的方式控制 PHP 运行时。本章将展示各种钩子和从扩展钩子到它们的常见用例。钩子到 PHP 功能的一…

    2022年6月13日
    0153
  • 十个PHP安全的必备技巧

    你好,PHP 开发人员。 在这篇文章中,我将尝试为你提供一些可以提高 PHP 应用程序安全性的具体步骤。我关注的是 PHP 配置本身,所以我们不会讨论 SQL 注入、HTTPS 或其他与 PHP 无关的问题。我将使用我的docker-ent…

    2022年6月21日
    0119
  • PHP中如何使用Memcache缓存技术对于爬虫进行优化。

    随着互联网技术的发展,网络爬虫越来越被用于数据挖掘、搜索引擎等领域。而大规模的数据采集和处理不仅需要更高效的爬虫算法,同时需要优化处理数据的速度和减少资源消耗。在这个过程中,缓存技术发挥了重要作用,…

    2023年5月21日
    00
  • PHP8.0中的调试工具:Blackfire

    随着网络应用的不断发展,开发人员们需要不断地学习和利用新的工具和技术以提高他们的开发效率和质量。其中,调试工具是重要的一环,它可以帮助开发人员更快地找到代码中的错误和性能问题。本文将介绍一款PHP8.0中…

    2023年5月18日
    01
  • 数组转json后的结果是数组还是对象? (踩坑记录)

    最近工作中经常遇到这些问题,因此记录一下~问题:数组转json,有时是对象,有时是数组?情况一:$arr = [1,2,3];//数组下标从0开始的 echo json_encode($arr); //[1,2,3] $arr = [1=>1,2=>2,3=>3];//数组…

    2022年6月27日
    0143
  • 如何在PHP中使用PHPUnit框架进行测试。

    随着Web开发的不断演进,测试已经成为了一个必不可少的部分。在Web开发中,测试可以帮助我们确保代码的质量以及提高开发效率。而PHPUnit框架则是PHP中最常用的测试框架之一,提供了丰富的测试工具和API,使得开发者…

    2023年5月23日
    00

联系我们

QQ:951076433

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