php functions 生成唯一码
<?php /** * 微擎密码生成 * */ function we7password($passwordinput, $salt, $authkey) { $passwordinput = "{$passwordinput}-{$salt}-{$authkey}"; return sha1($passwordinput); } /*****************************************时间相关函数*********************************************** */ /** * @title 计算时间差 * @author lyj [author] [2018-06-07] * @param [type] $datetimeStr1 [日期时间字符串1] * @param [type] $datetimeStr2 [日期时间字符串2] * @return [type] [返回秒数] */ function getDateTimeDifference($datetimeStr1, $datetimeStr2) { return strtotime($datetimeStr1) - strtotime($datetimeStr2); } /** * @title 时间戳 转 日期时间字符串 * @author lyj [author] [2018-06-07] * @param [type] $timeStamp [时间戳 数字] * @param string $pattern [日期时间格式 Y-m-d H:i:s] * @return [type] [返回 日期时间字符串] */ function getDateTimeStr($timeStamp = null, $pattern = 'Y-m-d H:i:s') { if ($timeStamp == null || !is_int($timeStamp)) { return date($pattern); } else { return date($pattern, $timeStamp); } } /** * @title 根据需要返回对应时间戳 * @author lyj [author] [2018-06-04] * @param string $config [description] * @return [type] [description] */ function getTimestamp($config = '') { switch ($config) { case '1': // 返回 明天 的Unix时间戳 return strtotime("+1 day"); break; case '2': // 返回 昨天 的Unix时间戳 return strtotime("-1 day"); break; case '3': // 返回 下月 的Unix时间戳 return strtotime("+1 month"); break; case '4': // 返回 上月 的Unix时间戳 return strtotime("-1 month"); break; case '5': // 返回 明年 的Unix时间戳 return strtotime("+1 year"); break; case '6': // 返回 上年 的Unix时间戳 return strtotime("-1 year"); break; case '7': // 返回 下星期 的Unix时间戳 return strtotime("+1 week"); break; case '8': // 返回 上星期 的Unix时间戳 return strtotime("-1 week"); break; case '9': // 返回 本月第一天 的Unix时间戳 return strtotime(date("Y-m-01 H:i:s")); break; case '10': // 返回 本月最后一天 的Unix时间戳 return strtotime(date("Y-m-t H:i:s")); break; case '11': // 返回 本周第一天 的Unix时间戳 return strtotime("this week"); break; case '12': // 返回 本周最后一天 的Unix时间戳 return strtotime("last day this week"); break; case '13': // 返回 今年开始 的Unix时间戳 return strtotime(date("Y-m-d")); break; default: // 返回 当前 的Unix时间戳 return time(); break; } } /*****************************************时间相关函数*********************************************** */ /*****************************************工具类函数*********************************************** */ /** * 获取二维数组中某列 $colstr 的最大最小值 */ function getMaxAndMinInArr($arr, $colstr = 0) { //求colstr这一列的最大值 $max = 0; foreach ($arr as $key => $val) { $max = max($max, $val[$colstr]); } //求colstr这一列的最小值 $min = $max; foreach ($arr as $key => $val) { $min = min($min, $val[$colstr]); } return array('max' => $max, 'min' => $min); } /** * @param int $n 参数。188752 * @param int $length 要保存的小数位 * @param bool $status 当为true时四舍五入保存 * @return double 返回数据 */ function decimals($n = 0, $length = 2, $status = false) { if ($status === true) { $num = round($n, $length); return $num; } $n = (string) $n; $n = explode('.', $n); $n[0] .= '.'; for ($i = 0; $i < $length; $i++) { $n[0] .= !isset($n[1][$i]) ? '0' : $n[1][$i]; } return $n[0]; } /** * 获取唯一码 * @param int $len * @return string */ function get_uni_code($len = 8) { $code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'; $rand = $code[rand(0, 25)] . strtoupper(dechex(date('m'))) . date('d') . substr(time(), -5) . substr(microtime(), 2, 5) . sprintf('%02d', rand(0, 99)); for ( $a = md5($rand), $s = '0123456789ABCDEFGHIJKLMNOPQRSTUV', $d = '', $f = 0; $f < $len; $g = ord($a[$f]), $d .= $s[($g ^ ord($a[$f])) - $g & 0x1F], $f++ ); return $d; } /** * 根据两点经纬度计算距离 * @param $lat1 点1纬度 * @param $lng1 点1经度 * @param $lat2 点2纬度 * @param $lng2 点2经度 * @return float 距离单位:千米 */ function get_distance($lat1, $lng1, $lat2, $lng2) { $earthRadius = 6371.004; $lat1 = ($lat1 * pi()) / 180; $lng1 = ($lng1 * pi()) / 180; $lat2 = ($lat2 * pi()) / 180; $lng2 = ($lng2 * pi()) / 180; $calcLongitude = $lng2 - $lng1; $calcLatitude = $lat2 - $lat1; $stepOne = pow(sin($calcLatitude / 2), 2) + cos($lat1) * cos($lat2) * pow(sin($calcLongitude / 2), 2); $stepTwo = 2 * asin(min(1, sqrt($stepOne))); $calculatedDistance = $earthRadius * $stepTwo; return sprintf("%.2f", $calculatedDistance); } /** * @title 随机字符串 * @author lyj [author] [2018-06-08] * @param integer $length [字符长度] * @param string $type [类型 数字 大写字母 小写字母 全部] * @param integer $convert [大小写 大于0 大写 小于0 小写] * @return [type] [description] * * echo random(32,'all',-45646); */ function random($length = 6, $type = 'all', $convert = 0) { $config = array( 'number' => '1234567890', 'capital_letter'=> 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'small_letter'=> 'abcdefghijklmnopqrstuvwxyz', 'all' => 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890' ); if (!isset($config[$type])) { $type = 'string'; } $string = $config[$type]; $code = ''; $strlen = strlen($string) - 1; for ($i = 0; $i < $length; $i++) { $code .= $string{mt_rand(0, $strlen)}; } if ($convert != 0) { $code = ($convert > 0) ? strtoupper($code) : strtolower($code); } return $code; } /** * @title 去除代码中的空白和注释 * @author lyj [author] [2018-06-08] * @param [type] $content [php文件内容] * @return [type] [清空空白和注释后的代码] * * * 使用说明 * $phpstr = file_get_contents("E:/www/test/functions.php"); * $phpstr_new = strip_whitespace($phpstr); * file_put_contents('E:/www/test/newphp.php', $phpstr_new); */ function strip_whitespace($content) { $stripStr = ''; //分析php源码 $tokens = token_get_all($content); $last_space = false; for ($i = 0, $j = count($tokens); $i < $j; $i++) { if (is_string($tokens[$i])) { $last_space = false; $stripStr .= $tokens[$i]; } else { switch ($tokens[$i][0]) { //过滤各种PHP注释 case T_COMMENT: case T_DOC_COMMENT: break; //过滤空格 case T_WHITESPACE: if (!$last_space) { $stripStr .= ' '; $last_space = true; } break; case T_START_HEREDOC: $stripStr .= "<<<THINK\n"; break; case T_END_HEREDOC: $stripStr .= "THINK;\n"; for($k = $i+1; $k < $j; $k++) { if(is_string($tokens[$k]) && $tokens[$k] == ';') { $i = $k; break; } else if($tokens[$k][0] == T_CLOSE_TAG) { break; } } break; default: $last_space = false; $stripStr .= $tokens[$i][1]; } } } return $stripStr; } if (!function_exists('arr_multi_sort')) { /** * 根据二维数组某列 排序 * * @param [type] $arr 数组 * @param [type] $arg 列的键值 * @param string $sort 排序类型 asc 升序 desc 降序 默认升序 * @return void */ function arr_multi_sort(&$arr,$arg,$sort = 'asc') { $sort = $sort=='asc'?SORT_ASC:SORT_DESC; $column_data = array_column($arr,$arg); array_multisort($column_data,$sort,$arr); } } if (!function_exists('log2txt')) { /** * 写入日志 * * @param [type] $values * @param string $dir * @return void */ function log2txt($values, $dir = 'lyj') { // 如果数据是数组则转换成字符 if (is_array($values)) { $values = print_r($values, true); } // 日志内容 $content = '[' . date('Y-m-d H:i:s') . ']' . PHP_EOL . $values . PHP_EOL . PHP_EOL; try { // 文件路径 $filePath = $dir . '/logs/'; // 路径不存在则创建 !is_dir($filePath) && mkdir($filePath, 0755, true); // 写入文件 return file_put_contents($filePath . date('Y-m-d') . '.log', $content . PHP_EOL . PHP_EOL, FILE_APPEND); } catch (\Exception $e) { return false; } } } /*****************************************工具类函数*********************************************** */ $arr = [ 'a' => [ 'name' => '对的', 'num' => 20, ], 'b' => [ 'name' => 'as', 'num' => 32, ], 'c' => [ 'name' => '对方答复', 'num' => 1, ], ]; print_r($arr); arr_multi_sort($arr, 'num', desc); print_r($arr);