PHP一维数组、二维数组排序

1、一维数组

结构:

{
    "data": [
        {
            "id": 1,
            "name": "套餐一",
            "category": null,
            "type": 1,
            "short_introduction": "套餐介绍",
            "detail": "套餐详情",
            "price": 4500,
            "discount_price": null
        },
        {
            "id": 2,
            "name": "套餐二",
            "category": null,
            "type": 1,
            "short_introduction": "套餐介绍二",
            "detail": "套餐详情二",
            "price": 2300,
            "discount_price": null
        },
        {
            "id": 3,
            "name": "套餐三",
            "category": null,
            "type": 1,
            "short_introduction": "套餐三",
            "detail": null,
            "price": 2300,
            "discount_price": null
        },
        {
            "id": 4,
            "name": "套餐四",
            "category": null,
            "type": 1,
            "short_introduction": "套餐四",
            "detail": "套餐详情",
            "price": 1700,
            "discount_price": null
        }
    ],
    "meta": {
        "pagination": {
            "total": 4,
            "count": 4,
            "per_page": 10,
            "current_page": 1,
            "total_pages": 1,
            "links": []
        }
    }
}



$sort    = request()->input('sortby','id');
        $order   = request()->input('order','asc');
        $paginator = $this->packageService->with(includes())->paginate();


        $packages = fractal($paginator, new PackageTransformer())
            ->parseIncludes(includes())
            ->toArray();


        $results = [];
        if('price' == $sort) {


            foreach ($packages['data'] as $unique => $package) {
                $results[] = $package['price'];
            }
            if('asc' == $order) {


                array_multisort($results,SORT_ASC,$packages['data']);


            }else{


                array_multisort($results,SORT_DESC,$packages['data']);


            }


        }


        if (!$packages) {
            return error(\Msg::PACKAGE_NOT_FOUND);
        }


        return $this->response($packages);


2、二维数组

  1. $arrUsers = array(  
  2.     array(  
  3.             'id'   => 1,  
  4.             'name' => '张三',  
  5.             'age'  => 25,  
  6.     ),  
  7.     array(  
  8.             'id'   => 2,  
  9.             'name' => '李四',  
  10.             'age'  => 23,  
  11.     ),  
  12.     array(  
  13.             'id'   => 3,  
  14.             'name' => '王五',  
  15.             'age'  => 40,  
  16.     ),  
  17.     array(  
  18.             'id'   => 4,  
  19.             'name' => '赵六',  
  20.             'age'  => 31,  
  21.     ),  
  22.     array(  
  23.             'id'   => 5,  
  24.             'name' => '黄七',  
  25.             'age'  => 20,  
  26.     ),  
  27. );   
  28.   
  29.   
  30. $sort = array(  
  31.         'direction' => 'SORT_DESC'//排序顺序标志 SORT_DESC 降序;SORT_ASC 升序  
  32.         'field'     => 'age',       //排序字段  
  33. );  
  34. $arrSort = array();  
  35. foreach($arrUsers AS $uniqid => $row){  
  36.     foreach($row AS $key=>$value){  
  37.         $arrSort[$key][$uniqid] = $value;  
  38.     }  
  39. }  
  40. if($sort['direction']){  
  41.     array_multisort($arrSort[$sort['field']], constant($sort['direction']), $arrUsers);  
  42. }  
  43.   
  44. var_dump($arrUsers); 


展开阅读全文

没有更多推荐了,返回首页