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

2 篇文章 0 订阅

话不多说先上图:

很显然这是一个多维数组,根据前端的要求,他让我把$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);

让我们再看下结果:

 

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

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

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值