php二维数组排序,原理简单,关键时候很管用

浏览:947 发布日期:2018/07/03 分类:技术分享 关键字: php二维数组排序 数组排序 排序
//对不起前面用过的朋友,有一个bug,当排序字段不是连续递增的时候,排序就会出现重复值,所以加了一个唯一字段验证,代码已更新。//重要的是解决这类问题的思维哦 【原创手写】
if(!function_exists('arrArrToSort')){
    /**
     * description:php二维数组排序(升、降)
     * author:wanghua
     * @param $data 数据源(必须是二维数组)
     * @param $field 要排序的字段(必须) eg:年龄或者价格
     * @param bool $sort 排序方式
     * @param bool $unique_field 指定唯一字段 eg:例如userID一般都是唯一的
     * @return array 返回排序后的数据源
     */
    function arrArrToSort($data, $field, $sort=true, $unique_field){
        //取出排序源
        $field_arr_key = array_column($data, $unique_field);
        $field_arr_val = array_column($data, $field);

        $source_arr = [];
        foreach ($field_arr_key as $key=>$val){
            $source_arr[$val] = $field_arr_val[$key];
        }


        //排序
        if($sort)arsort($source_arr);
        else asort($source_arr) ;
        //重组数据
        $new_arr = [];
        foreach ($source_arr as $k=>$v){
            foreach ($data as $a=>$b){
                if($k == $b[$unique_field]){
                    array_push($new_arr, $b);
                }
            }
        }
        return $new_arr;
    }
}
最佳答案
评论( 相关
后面还有条评论,点击查看>>