PHP二维/多维数组按照指定的键值来进行升序和降序

话不多说先上图:

很显然这是一个多维数组,根据前端的要求,他让我把$data['children']里面数据,根据id来升序传递给他。

那这个就简单了。(你不可能当着前端的面说不会搞吧)

我们先看下数组的数据结构
 

array(1) {
  [0]=>
  array(5) {
    ["id"]=>
    int(1)
    ["pid"]=>
    int(0)
    ["cate_name"]=>
    string(6) "菜单"
    ["pic"]=>
    string(0) ""
    ["children"]=>
    array(6) {
      [0]=>
      array(3) {
        ["id"]=>
        int(8)
        ["cate_name"]=>
        string(9) "土特产"
        ["pic"]=>
        string(0) ""
      }
      [1]=>
      array(3) {
        ["id"]=>
        int(7)
        ["cate_name"]=>
        string(12) "酒水饮料"
        ["pic"]=>
        string(0) ""
      }
      [2]=>
      array(3) {
        ["id"]=>
        int(6)
        ["cate_name"]=>
        string(6) "主食"
        ["pic"]=>
        string(0) ""
      }
      [3]=>
      array(3) {
        ["id"]=>
        int(5)
        ["cate_name"]=>
        string(6) "炒菜"
        ["pic"]=>
        string(0) ""
      }
      [4]=>
      array(3) {
        ["id"]=>
        int(4)
        ["cate_name"]=>
        string(6) "凉菜"
        ["pic"]=>
        string(0) ""
      }
      [5]=>
      array(3) {
        ["id"]=>
        int(2)
        ["cate_name"]=>
        string(12) "主打特色"
        ["pic"]=>
        string(0) ""
      }
    }
  }
}

话不多说,再看我是如何将$data['children']下面的数据是如何进行升序 排序的:


/*************这一块是查询。可以省略不看****************************/

//第一步查询数据,我用的是Tp6.0框架
$cateogry = StoreCategory::with('children')

            ->where('is_show',1)

            ->order('sort desc,id asc')

            ->where('pid',0)

            ->hidden(['add_time','is_show','sort','children.sort','children.add_time','children.pid','children.is_show'])

            ->select()

            ->toArray();

/*************这一块是查询。可以省略不看****************************/


//第二步 取出需要排列的数组
$a = $cateogry[0]['children'];

//第三步再取出 取出需要排序的参照的键      
$cmf_arr = array_column($a, 'id');
        
//第四部 进行升序排序(这一步不要用变量接收,array_multisort()返回的是布尔值) 
array_multisort($cmf_arr,SORT_ASC, $a);
   
//第五步 重新赋值,替换数组    
$cateogry[0]['children'] = $a;

//第六步,返回给前端
return app('json')->success($cateogry);

让我们再看下结果:

PHP二维/多维数组按照指定的键值来进行升序和降序_第1张图片

 

再看一下返回给前端的数据:

PHP二维/多维数组按照指定的键值来进行升序和降序_第2张图片

好了,这下已经满足了前端的API要求了。

 

PHP二维/多维数组按照指定的键值来进行升序和降序_第3张图片

 

你可能感兴趣的:(php,tp6.0,php)