實用函式集合
<?php
if (!function_exists('number_random')) {
function number_random($length = 6)
{
$result = '';
for ($i = 0; $i < $length; $i++) {
$result .= mt_rand(0, 9);
}
return $result;
}
}
if (!function_exists('string_random')) {
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')) {
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')) {
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')) {
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')) {
function blocking_unlock(string $lock_name)
{
$lock_key = 'blocking_lock';
return Redis::hdel($lock_key, $lock_name);
}
}
if (!function_exists('random_color')) {
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')) {
function get_hour_history()
{
$history = [];
for ($i = 0; $i <= date('H'); $i++) {
$history[] = $i;
}
return $history;
}
}
本作品採用《CC 協議》,轉載必須註明作者和本文連結