二位数组排序

排序函数

<?php
function sort_arr($arr,$clum,$sort="desc"){
    if(count($arr)==0){
        return false;
    }
    $newArr = $values = array();
    foreach($arr as $key=>$item){
        $values[$key] = $item[$clum]; 
    }
    if($sort=="desc"){
        arsort($values);
    }else{
        asort($values);
    }
    $newArr = array();
    foreach($newValues as $key=>$item){
        $newArr[] = $arr[$key];
    }
    return $newArr;
}

?>
本作品采用《CC 协议》,转载必须注明作者和本文链接
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 4
wanghan

这样不行,具体为什么我忘了

3年前 评论
wanghan
public static function sortArrByKey($array,$key='id',$rule='desc')
    {
        strtolower($rule) === 'asc' ? $rule = 'SORT_ASC' : $rule = 'SORT_DESC';

        $arrSort=[];

        foreach($array as $unique => $row)
        {
            foreach($row as $key => $value)
            {
                $arrSort[$key][$unique]=$value;
            }
        }

        array_multisort($arrSort[$key],constant($rule),$array);

        return $array;
    }
3年前 评论
xujinhuan 3年前
wanghan (作者) 3年前
kakasaber (楼主) 3年前

二维数组根据字段进行排序

function array_sequence($data = [], $field, $sort = 'SORT_DESC')
    {
        $arrSort = [];
        foreach ($data as $id => $row) {
            foreach ($row as $key => $value) {
                $arrSort[$key][$id] = $value;
            }
        }
        array_multisort($arrSort[$field], constant($sort), $data);
        return $data;
    }
3年前 评论

也可以实现

usort($array, function ($a, $b) {
        return $a['id'] <=> $b['id'];
});
3年前 评论
xujinhuan 3年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!