1、array_multisort()
这个函数非常强大,它有非常广泛的应用范围。它能对多个不相关的数组进行排序,也可以使用其中的一个元素作为下次排序的基础,还可以对数据库结果集进行排序。(相当于sql中groupBy与orderBy组合运用)
语法: array_multisort(array1,sorting order,sorting type,array2,array3…)
sorting order:可选的排序规则,注意要大写
SORT_ASC : 默认。按升序排列 (0-9,A-Z)。
SORT_DESC : 按降序排列 (9-0,Z-A)。
sorting type:可选的排序类型
SORT_REGULAR : 默认。把每一项按常规顺序排列(Standard ASCII,不改变类型)。
SORT_NUMERIC :把每一项作为数字来处理。
SORT_STRING : 把每一项作为字符串来处理。
例子:
array_multisort(array_column($arr, $arg1), SORT_ASC, array_column($arr, $arg2), SORT_DESC, $arr);
可以根据二维数组里面的多个字段进行排列组合,如例子中,数组arg1进行排序,其次再按照arg2排序。
2、round()
这个函数的作用是浮点数四舍五入,不知道大家留意过BC函数库没,里面有点坑,就是保留小数点的时候不会四舍五入,直接给你砍掉,比如你要计算两个浮点数的和,并且保留一位小数点
echo bcadd(1.17,2.22,1);
//结果为3.3
如果这样写得出来的结果会是3.3,而不是3.4,这时候你可以配合round来使用,代码如下
echo round(bcadd(1.17,2.22,2),1);
//结果为3.4
3、array_slice()
这个函数的作用是在数组中根据条件取出一段值,并返回。比较常见的地方在分页的应用上
语法就贴上W3SCHOOL上的,懒得打字了
语法.png
//$page是当前页数
//$size是当前列表页显示的最大数目
//$page是当前页数
$list = array_slice($data['list'],($page - 1) * $size,$size);
不过这个函数还可以这样用,代码如下
foreach ($spec as $k => $v){
if ($v['status'] == 0 || $v['is_del'] == 1){
unset($spec[$k]);
}
}
$spec = array_slice($spec,0,count($spec));
这段代码取自我做过的一个项目,假设spec数组有3条,那么其中的第[0]条数据不符合条件被剔除,那么spec数组中的子项就会变成[1]和[2],这时候我们就需要用array_slice进行重新排序,使其子项的键名为[0]和[1]。
这时候会有人问,为什么要这样操作,放在sql里面用where条件直接筛选不就好了?
确实,但是这么用的目的肯定其中一个原因肯定就是不能直接用where筛选(业务复杂度很高,sql写起来不太优雅而且容易漏掉很多情况),其次,尽量减少mysql的负担,用php去处理会快很多(当然这个没有去实际测过,有兴趣的伙伴可以去测一下然后再评论区打我的脸)。
那么就先到这吧,以后会持续更新更多项目上的骚操作,也欢迎各位大佬来批评指导!感谢大家的阅读!
网友评论