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;
}
}
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注亿速云行业资讯频道,感谢您对亿速云的支持。
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。