1跟狱、array_multisort()
這個(gè)函數(shù)非常強(qiáng)大,它有非常廣泛的應(yīng)用范圍世吨。它能對(duì)多個(gè)不相關(guān)的數(shù)組進(jìn)行排序澡刹,也可以使用其中的一個(gè)元素作為下次排序的基礎(chǔ),還可以對(duì)數(shù)據(jù)庫結(jié)果集進(jìn)行排序耘婚。(相當(dāng)于sql中g(shù)roupBy與orderBy組合運(yùn)用)
語法: array_multisort(array1,sorting order,sorting type,array2,array3…)
sorting order:可選的排序規(guī)則罢浇,注意要大寫
SORT_ASC : 默認(rèn)。按升序排列 (0-9沐祷,A-Z)嚷闭。
SORT_DESC : 按降序排列 (9-0,Z-A)赖临。
sorting type:可選的排序類型
SORT_REGULAR : 默認(rèn)胞锰。把每一項(xiàng)按常規(guī)順序排列(Standard ASCII,不改變類型)兢榨。
SORT_NUMERIC :把每一項(xiàng)作為數(shù)字來處理嗅榕。
SORT_STRING : 把每一項(xiàng)作為字符串來處理顺饮。
例子:
array_multisort(array_column($arr, $arg1), SORT_ASC, array_column($arr, $arg2), SORT_DESC, $arr);
可以根據(jù)二維數(shù)組里面的多個(gè)字段進(jìn)行排列組合,如例子中凌那,數(shù)組arg1進(jìn)行排序兼雄,其次再按照arg2排序。
2帽蝶、round()
這個(gè)函數(shù)的作用是浮點(diǎn)數(shù)四舍五入赦肋,不知道大家留意過BC函數(shù)庫沒,里面有點(diǎn)坑励稳,就是保留小數(shù)點(diǎn)的時(shí)候不會(huì)四舍五入佃乘,直接給你砍掉,比如你要計(jì)算兩個(gè)浮點(diǎn)數(shù)的和麦锯,并且保留一位小數(shù)點(diǎn)
echo bcadd(1.17,2.22,1);
//結(jié)果為3.3
如果這樣寫得出來的結(jié)果會(huì)是3.3恕稠,而不是3.4,這時(shí)候你可以配合round來使用,代碼如下
echo round(bcadd(1.17,2.22,2),1);
//結(jié)果為3.4
3扶欣、array_slice()
這個(gè)函數(shù)的作用是在數(shù)組中根據(jù)條件取出一段值鹅巍,并返回。比較常見的地方在分頁的應(yīng)用上
語法就貼上W3SCHOOL上的料祠,懶得打字了
//$page是當(dāng)前頁數(shù)
//$size是當(dāng)前列表頁顯示的最大數(shù)目
//$page是當(dāng)前頁數(shù)
$list = array_slice($data['list'],($page - 1) * $size,$size);
不過這個(gè)函數(shù)還可以這樣用骆捧,代碼如下
foreach ($spec as $k => $v){
if ($v['status'] == 0 || $v['is_del'] == 1){
unset($spec[$k]);
}
}
$spec = array_slice($spec,0,count($spec));
這段代碼取自我做過的一個(gè)項(xiàng)目,假設(shè)spec數(shù)組有3條髓绽,那么其中的第[0]條數(shù)據(jù)不符合條件被剔除敛苇,那么spec數(shù)組中的子項(xiàng)就會(huì)變成[1]和[2],這時(shí)候我們就需要用array_slice進(jìn)行重新排序顺呕,使其子項(xiàng)的鍵名為[0]和[1]枫攀。
這時(shí)候會(huì)有人問,為什么要這樣操作株茶,放在sql里面用where條件直接篩選不就好了来涨?
確實(shí),但是這么用的目的肯定其中一個(gè)原因肯定就是不能直接用where篩選(業(yè)務(wù)復(fù)雜度很高启盛,sql寫起來不太優(yōu)雅而且容易漏掉很多情況)蹦掐,其次,盡量減少mysql的負(fù)擔(dān)僵闯,用php去處理會(huì)快很多(當(dāng)然這個(gè)沒有去實(shí)際測(cè)過卧抗,有興趣的伙伴可以去測(cè)一下然后再評(píng)論區(qū)打我的臉)。
那么就先到這吧鳖粟,以后會(huì)持續(xù)更新更多項(xiàng)目上的騷操作社裆,也歡迎各位大佬來批評(píng)指導(dǎo)!感謝大家的閱讀牺弹!