/**
* @param int $num 阿拉伯?dāng)?shù)字
* @return mixed|string
*/functionnumToWord(int$num){$chiNum=array('零','一','二','三','四','五','六','七','八','九');$chiUni=array('','十','百','千','萬','億','十','百','千');$num_str=(string)$num;$count=strlen($num_str);$last_flag=true;//上一個(gè) 是否為0$zero_flag=true;//是否第一個(gè)$temp_num=null;//臨時(shí)數(shù)字$chiStr='';//拼接結(jié)果if($count==2){//兩位數(shù)$temp_num=$num_str[0];$chiStr=$temp_num==1?$chiUni[1]:$chiNum[$temp_num].$chiUni[1];$temp_num=$num_str[1];$chiStr.=$temp_num==0?'':$chiNum[$temp_num];}elseif($count>2){$index=0;for($i=$count-1;$i>=0;$i--){$temp_num=$num_str[$i];if($temp_num==0){if(!$zero_flag&&!$last_flag){$chiStr=$chiNum[$temp_num].$chiStr;$last_flag=true;}}else{$chiStr=$chiNum[$temp_num].$chiUni[$index%9].$chiStr;$zero_flag=false;$last_flag=false;}$index++;}}else{$chiStr=$chiNum[$num_str[0]];}return$chiStr;}
/**
* @param string|int $str 手機(jī)號(hào)碼
* @param int $start 開始位置健蕊,從0開始
* @param int $length 隱藏長(zhǎng)度
* @return bool|string|string[]
*/functionhidePhone($str,int$start=3,int$length=4){//獲取最后一位$end=$start+$length;//判斷傳參是否正確if($start<0||$end>11)returnfalse;$replace='';//用于判斷多少for($i=0;$i<$length;$i++)$replace.='*';returnsubstr_replace($str,$replace,$start,$length);}
/**
* 獲取上周的時(shí)間數(shù)組
* @param $day 獲取當(dāng)前周的第幾天 周日是 0 周一到周六是1-6?
* @param $format 日期格式
* @param $last 是否獲取上周蝗砾,1=上周7天徘铝,0=這周7天
* @return array
*/
function getWeekDayArr(int $day, string $format = 'Ymd', int $last = 1)
{
? ? if ($last == 1) {
? ? ? ? //獲取本周開始日期,如果$day是0是周日:-6天;其它:$day-1天?
? ? ? ? $beginLastweek = strtotime(date($format) . ' -' . ($day ? $day - 1 : 6) . ' days');
? ? ? ? $curMonday = date($format, $beginLastweek);
? ? ? ? $startDay = date($format, strtotime("$curMonday -7 days"));
? ? ? ? $data = [
? ? ? ? ? ? $startDay,
? ? ? ? ? ? date($format, strtotime("$startDay +1 days")),
? ? ? ? ? ? date($format, strtotime("$startDay +2 days")),
? ? ? ? ? ? date($format, strtotime("$startDay +3 days")),
? ? ? ? ? ? date($format, strtotime("$startDay +4 days")),
? ? ? ? ? ? date($format, strtotime("$startDay +5 days")),
? ? ? ? ? ? date($format, strtotime("$startDay +6 days")),
? ? ? ? ];
? ? } else {
? ? ? ? //獲取當(dāng)前周幾
? ? ? ? //獲取本周開始日期盒刚,如果$day是0是周日:-6天;其它:$day-1天
? ? ? ? $week = date('w', time()) - $day + 1;
? ? ? ? $data = [];
? ? ? ? for ($i = 1; $i <= 7; $i++) {
? ? ? ? ? ? $data[$i] = date($format, strtotime('+' . $i - $week . ' days'));
? ? ? ? }
? ? }
? ? return $data;
}
/**
* 時(shí)間戳轉(zhuǎn)換
* @param $time
* @return string
*/functiontimeToBefore(int$time){$t=time()-$time;$f=array('31536000'=>'年','2592000'=>'個(gè)月','604800'=>'星期','86400'=>'天','3600'=>'小時(shí)','60'=>'分鐘','1'=>'秒');foreach($fas$k=>$v){if(0!=$c=floor($t/(int)$k)){return$c.$v.'前';}}}
/**
* 將多維數(shù)組繼續(xù)分頁,自定義分頁效果
* @param array &$array 數(shù)組
* @param int $page 當(dāng)前頁數(shù)
* @param int $limit 每頁頁數(shù)
* @param int $order 0-不變 1-反序
* @param bool $preserveKey true - 保留鍵名? false - 默認(rèn)彩届。重置鍵名
*/functionarrayToPage(Array&$array,int$page=1,int$limit=20,int$order=0,bool$preserveKey=false){$start=($page-1)*$limit;//計(jì)算每次分頁的開始位置//反序if($order==1)$array=array_reverse($array);$array=array_slice($array,$start,$limit,$preserveKey);}
/**
* 二維數(shù)組根據(jù)pid生成多維樹
* @param $list 父子級(jí)拼接數(shù)組傳入
* @param $pid 父級(jí)ID字段
* @param $child 子集
* @return array
*/functionlistToTree($list,$pid='pid',$child='children'){$tree=array();// 創(chuàng)建Treeif(is_array($list)){// 創(chuàng)建基于主鍵的數(shù)組引用$refer=array();foreach($listas$key=>$data)$refer[$data['id']]=&$list[$key];foreach($listas$key=>$data){// 判斷是否存在parent$parentId=$data[$pid];if(0==$parentId){$tree[]=&$list[$key];$list[$key][$child]=[];}else{if(isset($refer[$parentId])){$parent=&$refer[$parentId];$parent[$child][]=&$list[$key];}}}}return$tree;}
/**
* 根據(jù)相關(guān)鍵值生成父子關(guān)系
* @param array $arr1 數(shù)組1
* @param array $arr2 數(shù)組2
* @param string $arr1_key 數(shù)組1對(duì)應(yīng)的鍵值
* @param string $arr2_key 數(shù)組2對(duì)應(yīng)的父級(jí)鍵值
* @param string $child 合并的數(shù)組鍵值
*/functionlistToTree2(&$arr1,$arr2,$arr1_key='id',$arr2_key='pid',$child='children'){foreach($arr1as$i=>&$item1){foreach($arr2as$j=>$item2){if($item1[$arr1_key]==$item2[$arr2_key]){if(!isset($item1[$child])||!is_array($item1[$child]))$item1[$child]=[];$item1[$child][]=$item2;}}}}