美文网首页PHP实战
项目中非常实用的函数

项目中非常实用的函数

作者: 周瑜君 | 来源:发表于2020-04-27 16:33 被阅读0次

    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);
    

    可以根据二维数组里面的多个字段进行排列组合,如例子中,数组arr中可以先按arg1进行排序,其次再按照arr中的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去处理会快很多(当然这个没有去实际测过,有兴趣的伙伴可以去测一下然后再评论区打我的脸)。
    那么就先到这吧,以后会持续更新更多项目上的骚操作,也欢迎各位大佬来批评指导!感谢大家的阅读!

    相关文章

      网友评论

        本文标题:项目中非常实用的函数

        本文链接:https://www.haomeiwen.com/subject/mezywhtx.html