S1开发手册
前言
安装
规范
目录结构
框架
程序执行流程
入口文件
应用模块
依赖注入
控制器架构
逻辑架构
验证架构
模型架构
行为架构
插件架构
服务架构
数据操作
系统常用配置
系统常用常量
系统常用函数
模块开发
模板制作
基础操作
本文档使用
零起飞
构建
系统常用函数
本文最后编辑时间:
2025-05-19 09:28:47
热度:
908
```php strtotime($endDate)) { //如果开始日期大于结束日期,直接return 防止下面的循环出现死循环 return $dates; } elseif ($startDate == $endDate) { //开始日期与结束日期是同一天时 array_push($dates, $startDate); return $dates; } else { array_push($dates, $startDate); $currentDate = $startDate; do { $nextDate = date('Y-m-d', strtotime($currentDate . ' +1 days')); array_push($dates, $nextDate); $currentDate = $nextDate; } while ($endDate != $currentDate); return $dates; } } /** * 时间计算函数 * @param int $time * @param int $caclVal 增加、减少的值 * @param int $type 计算时间类型 * @return string 完整的时间显示 */ function date_to_day($dates = []) { $days = []; foreach ($dates as $date) { $days[] = date("d", strtotime($date)); } return $days; } /** * [time_friend 时间美化函数v2.0] */ function time_friend($time) { $todayLast = strtotime(date('Y-m-d') . ' 23:59:59'); $agoTimeTrue = time() - $time; $agoTime = $todayLast - $time; $agoDay = floor($agoTime / 86400); $res = ''; if ($agoTimeTrue < 60) { $res = '刚刚'; } elseif ($agoTimeTrue < 3600) { $res = (ceil($agoTimeTrue / 60)) . '分钟前'; } elseif ($agoTimeTrue < (3600 * 12)) { $res = (ceil($agoTimeTrue / 3600)) . '小时前'; } elseif ($agoDay == 0) { $res = '今天 ' . date('H:i', $time); } elseif ($agoDay == 1) { $res = '昨天 ' . date('H:i', $time); } elseif ($agoDay == 2) { $res = '前天 ' . date('H:i', $time); } elseif (($agoDay > 2) && ($agoDay < 16)) { $res = $agoDay . '天前' . date('H:i', $time); } else { $res = date('Y-m-d H:i:s', $time); } return $res; } /**时间生成时间段,开始和结束时间 * 今天,昨天,前天,本周,上周,上上周,本月,上月,上上月,本季度,上季度,上上季度,本年,上年,上上年 * today 今天 * yesterday 昨天 * beforeyesterday 前天 * thisweek 本周 * lastweek 上周 * beforelastweek 上上周 * 。。。。。。。。。。 * @return mixed * Author: 开发人生 goodkfrs@qq.com * Date: 2021/8/9 0009 10:07 */ function make_time() { //获取今日开始时间戳和结束时间戳 $beginToday = mktime(0, 0, 0, date('m'), date('d'), date('Y')); $endToday = mktime(0, 0, 0, date('m'), date('d') + 1, date('Y')) - 1; $times['today']['begin'] = $beginToday; $times['today']['end'] = $endToday; //获取昨日起始时间戳和结束时间戳 $beginYesterday = mktime(0, 0, 0, date('m'), date('d') - 1, date('Y')); $endYesterday = mktime(0, 0, 0, date('m'), date('d'), date('Y')) - 1; $times['yesterday']['begin'] = $beginYesterday; $times['yesterday']['end'] = $endYesterday; //获取昨日起始时间戳和结束时间戳 $beginYesterday = mktime(0, 0, 0, date('m'), date('d') - 2, date('Y')); $endYesterday = mktime(0, 0, 0, date('m'), date('d') - 1, date('Y')) - 2; $times['beforeyesterday']['begin'] = $beginYesterday; $times['beforeyesterday']['end'] = $endYesterday; //获取本周起始时间戳和结束时间戳 $beginWeek = mktime(0, 0, 0, date('m'), date('d') - date('w') + 1 - 7, date('Y')); $endWeek = mktime(23, 59, 59, date('m'), date('d') - date('w') + 7 - 7, date('Y')); $times['thisweek']['begin'] = $beginWeek; $times['thisweek']['end'] = $endWeek; //获取上周起始时间戳和结束时间戳 $beginLastweek = mktime(0, 0, 0, date('m'), date('d') - date('w') + 1 - 14, date('Y')); $endLastweek = mktime(23, 59, 59, date('m'), date('d') - date('w') + 7 - 14, date('Y')); $times['lastweek']['begin'] = $beginLastweek; $times['lastweek']['end'] = $endLastweek; //获取上周起始时间戳和结束时间戳 $beginLastweek = mktime(0, 0, 0, date('m'), date('d') - date('w') + 1 - 21, date('Y')); $endLastweek = mktime(23, 59, 59, date('m'), date('d') - date('w') + 7 - 21, date('Y')); $times['beforelastweek']['begin'] = $beginLastweek; $times['beforelastweek']['end'] = $endLastweek; //获取本月起始时间戳和结束时间戳 $beginThismonth = mktime(0, 0, 0, date('m'), 1, date('Y')); $endThismonth = mktime(23, 59, 59, date('m'), date('t'), date('Y')); $times['thismonth']['begin'] = $beginThismonth; $times['thismonth']['end'] = $endThismonth; //获取上月的起始时间戳和结束时间戳 $beginLastmonth = mktime(0, 0, 0, date('m') - 1, 1, date('Y')); $endLastmonth = mktime(23, 59, 59, date('m'), 0, date('Y')); $times['lastmonth']['begin'] = $beginLastmonth; $times['lastmonth']['end'] = $endLastmonth; //获取上2月的起始时间戳和结束时间戳 $beginLastmonth = mktime(0, 0, 0, date('m') - 2, 1, date('Y')); $endLastmonth = mktime(23, 59, 59, date('m') - 1, 0, date('Y')); $times['beforelastmonth']['begin'] = $beginLastmonth; $times['beforelastmonth']['end'] = $endLastmonth; //获取今年的起始时间和结束时间 $beginThisyear = mktime(0, 0, 0, 1, 1, date('Y')); $endThisyear = mktime(23, 59, 59, 12, 31, date('Y')); $times['thisyear']['begin'] = $beginThisyear; $times['thisyear']['end'] = $endThisyear; //获取上年的起始时间和结束时间 $beginLastyear = mktime(0, 0, 0, 1, 1, date('Y') - 1); $endLastyear = mktime(23, 59, 59, 12, 31, date('Y') - 1); $times['lastyear']['begin'] = $beginLastyear; $times['lastyear']['end'] = $endLastyear; //获取上2年的起始时间和结束时间 $beginLastyear = mktime(0, 0, 0, 1, 1, date('Y') - 2); $endLastyear = mktime(23, 59, 59, 12, 31, date('Y') - 2); $times['beforelastyear']['begin'] = $beginLastyear; $times['beforelastyear']['end'] = $endLastyear; //获取本季度开始时间和结束时间 $season = ceil((date('n')) / 3);//当月是第几季度 $beginThisSeason = mktime(0, 0, 0, $season * 3 - 3 + 1, 1, date('Y')); $endThisSeason = mktime(23, 59, 59, $season * 3, date('t', mktime(0, 0, 0, $season * 3, 1, date("Y"))), date('Y')); $times['thisseason']['begin'] = $beginThisSeason; $times['thisseason']['end'] = $endThisSeason; //获取上季度的起始时间和结束时间 $beginLastSeason = mktime(0, 0, 0, ($season - 1) * 3 - 3 + 1, 1, date('Y')); $endLastSeason = mktime(23, 59, 59, ($season - 1) * 3, date('t', mktime(0, 0, 0, $season * 3, 1, date("Y"))), date('Y')); $times['lastseason']['begin'] = $beginLastSeason; $times['lastseason']['end'] = $endLastSeason; //获取上季度的起始时间和结束时间 $beginLastSeason = mktime(0, 0, 0, ($season - 2) * 3 - 3 + 1, 1, date('Y')); $endLastSeason = mktime(23, 59, 59, ($season - 2) * 3, date('t', mktime(0, 0, 0, $season * 3, 1, date("Y"))), date('Y')); $times['beforelastseason']['begin'] = $beginLastSeason; $times['beforelastseason']['end'] = $endLastSeason; return $times; } /**获得指定年的,月的开始结束时间 * @param string $date * @return mixed * Author: 开发人生 goodkfrs@qq.com * Date: 2021/8/9 0009 10:11 */ function getMonthStartEndTime($date=''){ if(empty($date)){ $times=time(); }else{ $times=strtotime($date); } //获取本月起始时间戳和结束时间戳 $beginThismonth=mktime(0,0,0,date('m',$times),1,date('Y',$times)); $endThismonth=mktime(23,59,59,date('m',$times),date('t',$times),date('Y',$times)); $rangeTime['begin'] = date("Y-m-d H:i:s",$beginThismonth); $rangeTime['end'] = date("Y-m-d H:i:s",$endThismonth); return $rangeTime; } /**批定年月,年的起止时间 * @param string $year * @return mixed * Author: 开发人生 goodkfrs@qq.com * Date: 2021/8/9 0009 10:13 */ function getYearStartEndTime($year=''){ if(empty($year)){ $year=date("Y"); } $year=date("Y"); //获取年起始时间戳和结束时间戳 $beginThisyear = mktime(0,0,0,1,1,$year); $endThisyear = mktime(23,59,59,12,31,$year); $rangeTime['begin'] = date("Y-m-d H:i:s",$beginThisyear); $rangeTime['end'] = date("Y-m-d H:i:s",$endThisyear); return $rangeTime; } /**指定年月,所在季度开始,结束时间 * @param string $date * @return mixed * Author: 开发人生 goodkfrs@qq.com * Date: 2021/8/9 0009 10:14 */ function getQuarterStartEndTime($date=''){ if(empty($date)){ $times=time(); }else{ $times=strtotime($date); } $season = ceil((date('n',$times))/3);//当月是第几季度 $rangeTime['begin']= date('Y-m-d H:i:s', mktime(0, 0, 0,$season*3-3+1,1,date('Y',$times))); $rangeTime['end']= date('Y-m-d H:i:s', mktime(23,59,59,$season*3,date('t',mktime(0, 0 , 0,$season*3,1,date("Y",$times))),date('Y',$times))); return $rangeTime; } /** * 字符串截取,支持中文和其他编码 * * @param string $str 需要转换的字符串 * @param string $start 开始位置 * @param string $length 截取长度 * @param string $suffix 截断显示字符 * @param string $charset 编码格式 * @return string */ if (!function_exists('msubstr')) { function msubstr($str = '', $start = 0, $length = NULL, $suffix = false, $charset = "utf-8") { if (function_exists("mb_substr")) $slice = mb_substr($str, $start, $length, $charset); elseif (function_exists('iconv_substr')) { $slice = iconv_substr($str, $start, $length, $charset); if (false === $slice) { $slice = ''; } } else { $re['utf-8'] = "/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|[\xe0-\xef][\x80-\xbf]{2}|[\xf0-\xff][\x80-\xbf]{3}/"; $re['gb2312'] = "/[\x01-\x7f]|[\xb0-\xf7][\xa0-\xfe]/"; $re['gbk'] = "/[\x01-\x7f]|[\x81-\xfe][\x40-\xfe]/"; $re['big5'] = "/[\x01-\x7f]|[\x81-\xfe]([\x40-\x7e]|\xa1-\xfe])/"; preg_match_all($re[$charset], $str, $match); $slice = join("", array_slice($match[0], $start, $length)); } $str_len = strlen($str); // 原字符串长度 $slice_len = strlen($slice); // 截取字符串的长度 if ($slice_len < $str_len) { $slice = $suffix ? $slice . '...' : $slice; } return $slice; } } /** * 截取内容清除html之后的字符串长度,支持中文和其他编码 * * @param string $str 需要转换的字符串 * @param string $start 开始位置 * @param string $length 截取长度 * @param string $suffix 截断显示字符 * @param string $charset 编码格式 * @return string */ if (!function_exists('html_msubstr')) { function html_msubstr($str = '', $start = 0, $length = NULL, $suffix = false, $charset = "utf-8") { $str = htmlspecialchars_decode($str); $str = checkStrHtml($str); return msubstr($str, $start, $length, $suffix, $charset); } } /** * 针对多语言截取,其他语言的截取是中文语言的2倍长度 * * @param string $str 需要转换的字符串 * @param string $start 开始位置 * @param string $length 截取长度 * @param string $suffix 截断显示字符 * @param string $charset 编码格式 * @return string */ if (!function_exists('text_msubstr')) { function text_msubstr($str = '', $start = 0, $length = NULL, $suffix = false, $charset = "utf-8") { return msubstr($str, $start, $length, $suffix, $charset); } } /** * 自定义只针对htmlspecialchars编码过的字符串进行解码 * * @param string $str 需要转换的字符串 * @param string $start 开始位置 * @param string $length 截取长度 * @param string $suffix 截断显示字符 * @param string $charset 编码格式 * @return string */ if (!function_exists('htmlspecialchars_decode')) { function htmlspecialchars_decode($str = '') { if (is_string($str) && stripos($str, '<') !== false && stripos($str, '>') !== false) { $str = htmlspecialchars_decode($str); } return $str; } } /** * 过滤Html标签 * * @param string $string 内容 * @return string */ if (!function_exists('checkStrHtml')) { function checkStrHtml($string) { $string = trim_space($string); if (is_numeric($string)) return $string; if (!isset($string) or empty($string)) return ''; $string = preg_replace('/[\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F]/', '', $string); $string = ($string); $string = strip_tags($string, ""); //清除HTML如
等代码 // $string = str_replace("\n", "", str_replace(" ", "", $string));//去掉空格和换行 $string = str_replace("\n", "", $string);//去掉空格和换行 $string = str_replace("\t", "", $string); //去掉制表符号 $string = str_replace(PHP_EOL, "", $string); //去掉回车换行符号 $string = str_replace("\r", "", $string); //去掉回车 $string = str_replace("'", "‘", $string); //替换单引号 $string = str_replace("&", "&", $string); $string = str_replace("=★", "", $string); $string = str_replace("★=", "", $string); $string = str_replace("★", "", $string); $string = str_replace("☆", "", $string); $string = str_replace("√", "", $string); $string = str_replace("±", "", $string); $string = str_replace("‖", "", $string); $string = str_replace("×", "", $string); $string = str_replace("∏", "", $string); $string = str_replace("∷", "", $string); $string = str_replace("⊥", "", $string); $string = str_replace("∠", "", $string); $string = str_replace("⊙", "", $string); $string = str_replace("≈", "", $string); $string = str_replace("≤", "", $string); $string = str_replace("≥", "", $string); $string = str_replace("∞", "", $string); $string = str_replace("∵", "", $string); $string = str_replace("♂", "", $string); $string = str_replace("♀", "", $string); $string = str_replace("°", "", $string); $string = str_replace("¤", "", $string); $string = str_replace("◎", "", $string); $string = str_replace("◇", "", $string); $string = str_replace("◆", "", $string); $string = str_replace("→", "", $string); $string = str_replace("←", "", $string); $string = str_replace("↑", "", $string); $string = str_replace("↓", "", $string); $string = str_replace("▲", "", $string); $string = str_replace("▼", "", $string); // --过滤微信表情 $string = preg_replace_callback('/[\xf0-\xf7].{3}/', function ($r) { return ''; }, $string); return $string; } } /** * 过滤前后空格等多种字符 * * @param string $str 字符串 * @param array $arr 特殊字符的数组集合 * @return string */ if (!function_exists('trim_space')) { function trim_space($str, $arr = array()) { if (empty($arr)) { $arr = array(' ', ' '); } foreach ($arr as $key => $val) { $str = preg_replace('/(^' . $val . ')|(' . $val . '$)/', '', $str); } return $str; } } /** * 替换指定的符号 * * @param array $arr 特殊字符的数组集合 * @param string $replacement 符号 * @param string $str 字符串 * @return string */ if (!function_exists('func_preg_replace')) { function func_preg_replace($arr = array(), $replacement = ',', $str = '') { if (empty($arr)) { $arr = array(','); } foreach ($arr as $key => $val) { $str = preg_replace('/(' . $val . ')/', $replacement, $str); } return $str; } } /** * 判断url是否完整的链接 * * @param string $url 网址 * @return boolean */ if (!function_exists('is_http_url')) { function is_http_url($url) { // preg_match("/^(http:|https:|ftp:|svn:)?(\/\/).*$/", $url, $match); preg_match("/^((\w)*:)?(\/\/).*$/", $url, $match); if (empty($match)) { return false; } else { return true; } } } /**字符串按符号截取 * $str='123/456/789/abc'; * 示例: * echo cut_str($str,'/',0); //输出 123 * echo cut_str($str,'/',2); //输出 789 * echo cut_str($str,'/',-1);//输出 abc * echo cut_str($str,'/',-3);//输出 456 * @param $str * @param $sign * @param $number * @return string * * Author: lingqifei created by at 2020/2/29 0029 */ if (!function_exists('cut_str')) { function cut_str($str, $sign, $number) { $array = explode($sign, $str); $length = count($array); if ($number < 0) { $new_array = array_reverse($array); $abs_number = abs($number); if ($abs_number > $length) { return 'error'; } else { return $new_array[$abs_number - 1]; } } else { if ($number >= $length) { return 'error'; } else { return $array[$number]; } } } } /** * 文件下载函数 * Author: lingqifei created by at 2020/6/4 0004 */ if (!function_exists('download')) { function download($filepath, $filename = 'downfile.zip') { // 检查文件是否存在 if (!file_exists($filepath)) { $this->error('文件未找到'); } else { // 打开文件 $file1 = fopen($filepath, "r"); // 输入文件标签 Header("Content-type: application/octet-stream"); Header("Accept-Ranges: bytes"); Header("Accept-Length:" . filesize($filepath)); Header("Content-Disposition: attachment;filename=" . $filename); ob_clean(); // 重点!!! flush(); // 重点!!!!可以清除文件中多余的路径名以及解决乱码的问题: //输出文件内容 //读取文件内容并直接输出到浏览器 echo fread($file1, filesize($filepath)); fclose($file1); exit(); } } } /** * 服务器文件下载输出,支持断点输出 * @param string $file 文件路径为本地绝对路径 * * @return 文件 */ if (!function_exists('downFileOutput')) { function downFileOutput($file) { str_replace(['/', '\\'], DIRECTORY_SEPARATOR, $file); //检查文件是否存在 if (empty($file) or !is_file($file)) { die('文件不存在'); } $fileName = basename($file); //以只读和二进制模式打开文件 $fp = @fopen($file, 'rb'); if ($fp) { // 获取文件大小 $file_size = filesize($file); //告诉浏览器这是一个文件流格式的文件 header('content-type:application/octet-stream'); header('Content-Disposition: attachment; filename=' . $fileName); // 断点续传 $range = null; if (!empty($_SERVER['HTTP_RANGE'])) { $range = $_SERVER['HTTP_RANGE']; $range = preg_replace('/[\s|,].*/', '', $range); $range = explode('-', substr($range, 6)); if (count($range) < 2) { $range[1] = $file_size; } $range = array_combine(array('start', 'end'), $range); if (empty($range['start'])) { $range['start'] = 0; } if (empty($range['end'])) { $range['end'] = $file_size; } } // 使用续传 if ($range != null) { header('HTTP/1.1 206 Partial Content'); header('Accept-Ranges:bytes'); // 计算剩余长度 header(sprintf('content-length:%u', $range['end'] - $range['start'])); header(sprintf('content-range:bytes %s-%s/%s', $range['start'], $range['end'], $file_size)); // fp指针跳到断点位置 fseek($fp, sprintf('%u', $range['start'])); } else { header('HTTP/1.1 200 OK'); header('Accept-Ranges:bytes'); header('content-length:' . $file_size); } while (!feof($fp)) { echo fread($fp, 4096); ob_flush(); } fclose($fp); } else { die('File loading failed'); } } } /** * 判断文件是否存在,支持本地及远程文件 * @param String $file 文件路径 * @return Boolean */ if (!function_exists('check_file_exists')) { function check_file_exists($file) { // 远程文件 if (strtolower(substr($file, 0, 4)) == 'http') { $header = get_headers($file, true); return isset($header[0]) && (strpos($header[0], '200') || strpos($header[0], '304')); // 本地文件 } else { return file_exists($file); } } } /** *检测网址是否能正常打开 * * @param $url * @return mixed * Author: kfrs
created by at 2020/12/25 0025 */ if (!function_exists('httpcode')) { function httpcode($url) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_TIMEOUT, 30); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_exec($ch); // $resp = curl_exec($ch); $curl_code = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close($ch); return $curl_code; // if ($curl_code == 200 || $curl_code == 302) { // echo '连接成功,状态码:' . $curl_code; // } else { // echo '连接失败,状态码:' . $curl_code; // } } } /**curl。post获取数据 * @param $url * @param $arr_data * Author: kfrs
created by at 2020/12/25 0025 */ if (!function_exists('curl_post')) { function curl_post($url, $post_data) { //$post_data = http_build_query($post_data); $ch = curl_init(); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HTTPHEADER, array('Expect:')); //设置header curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data); curl_setopt($ch, CURLOPT_TIMEOUT, 30); $response = curl_exec($ch); $errno = curl_errno($ch); $info = curl_getinfo($ch); $error = curl_error($ch); // var_dump($response); // var_dump($error); curl_close($ch);//关闭 return $response; } } /** * 只保留字符串首尾字符,隐藏中间用*代替(两个字符时只显示第一个) * @param string $user_name 姓名 * @return string 格式化后的姓名 */ if (!function_exists('hide_name')) { function hiddle_name($user_name) { $strlen = mb_strlen($user_name, 'utf-8'); $firstStr = mb_substr($user_name, 0, 1, 'utf-8'); $lastStr = mb_substr($user_name, -1, 1, 'utf-8'); if ($strlen > 2) { return $firstStr . str_repeat("*", $strlen - 2) . $lastStr; } else if ($strlen == 2) { return $firstStr . str_repeat('*', mb_strlen($user_name, 'utf-8') - 1); } else { return $user_name; } } } /** * 定义函数手机号隐藏中间四位 * @param string $str 手机号 * @return string 格式化后手机号 */ if (!function_exists('hide_mobile')) { function hiddle_mobile($str) { $str = $str; $resstr = substr_replace($str, '****', 3, 4); return $resstr; } } /** * 生成一个随机字符 * * @access public * @param string $ddnum * @return string */ if (!function_exists('dd2char')) { function dd2char($ddnum) { $ddnum = strval($ddnum); $slen = strlen($ddnum); $okdd = ''; $nn = ''; for ($i = 0; $i < $slen; $i++) { if (isset($ddnum[$i + 1])) { $n = $ddnum[$i] . $ddnum[$i + 1]; if (($n > 96 && $n < 123) || ($n > 64 && $n < 91)) { $okdd .= chr($n); $i++; } else { $okdd .= $ddnum[$i]; } } else { $okdd .= $ddnum[$i]; } } return $okdd; } } /** * PHP stdClass Object转array * * @access public * @param string $ddnum * @return string */ if (!function_exists('obj2arr')) { function obj2arr($array) { if (is_object($array)) { $array = (array)$array; } if (is_array($array)) { foreach ($array as $key => $value) { $array[$key] = obj2arr($value); } } return $array; } } /** * 统计二维数组一列和 * @param $array * @param $column * @return float|int * Author: 开发人生 goodkfrs@qq.com * Date: 2021/5/31 0031 15:14 */ if (!function_exists('get_2arr_sum')) { function get_2arr_sum($array, $column) { $total = array_sum(array_column($array, $column)); $total = round($total, 2); return $total; } } /** * 删除数组中指定元素 * @param $array * @param $value * @return float|int * Author: 开发人生 goodkfrs@qq.com * Date: 2021/5/31 0031 15:14 */ if (!function_exists('delArrValue')) { //foreach遍历后unset删除,这种方法也是最容易想到的方法 function delArrValue($arr, $value) { if (!is_array($arr)) { return $arr; } foreach ($arr as $k => $v) { if ($v == $value) { unset($arr[$k]); } } return $arr; } } /**二维数组去重(保留各个键值的同时去除重复的项) * @param $arr * @param $key * @return mixed * Author: 开发人生 goodkfrs@qq.com * Date: 2021/8/2 0002 17:41 */ function array2unique_bykey($arr, $key) { $tmp_arr = array(); foreach ($arr as $k => $v) { if (in_array($v[$key], $tmp_arr)) //搜索$v[$key]是否在$tmp_arr数组中存在,若存在返回true { unset($arr[$k]); //销毁一个变量 如果$tmp_arr中已存在相同的值就删除该值 } else { $tmp_arr[$k] = $v[$key]; //将不同的值放在该数组中保存 } } //ksort($arr); //ksort函数对数组进行排序(保留原键值key) sort为不保留key值 return $arr; } ```
提供完善五心级服务,满足用户需求,注重用户体验,为客户打造融入个性需求的企业信息化服务解决方案。
Copyright © 2015~2025 07FLY All Rights Reserved