欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2024-03-15 12:32:41
...

话不多说先上图:

很显然这是一个多维数组,根据前端的要求,他让我把$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二维/多维数组按照指定的键值来进行升序和降序

 

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

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

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

 

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

 

相关标签: php tp6.0