Mysql 递归获取多重数组数据

本文介绍了一种通过递归方法来获取多层级数据结构中顶级条目下的所有子条目ID的方法。该方法适用于诸如产品分类等层级结构的数据处理场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

 

多重数据 $data ,获取顶级下的所有下级id

 

$data 

array:3 [▼
  0 => array:7 [▼
    "id" => 1
    "created_at" => "2017-08-05 11:30:15"
    "updated_at" => "2017-08-05 11:30:15"
    "parent_id" => 0
    "children" => array:1 [▼
      0 => array:7 [▼
        "id" => 2
        "created_at" => "2017-08-05 11:31:11"
        "updated_at" => "2017-08-18 18:57:11"
        "parent_id" => 1
        "children" => array:1 [▼
          0 => array:7 [▼
            "id" => 3
            "created_at" => "2017-08-05 11:33:34"
            "updated_at" => "2017-08-05 11:33:34"
            "parent_id" => 2
            "children" => []
          ]
        ]
      ]
    ]
  ]
  1 => array:7 [▼
    "id" => 4
    "created_at" => "2017-08-10 15:36:03"
    "updated_at" => "2017-08-10 15:36:03"
    "parent_id" => 0
    "children" => array:1 [▼
      0 => array:7 [▼
        "id" => 5
        "created_at" => "2017-08-10 15:36:31"
        "updated_at" => "2017-08-10 15:42:08"
        "parent_id" => 4
        "children" => []
      ]
    ]
  ]
  2 => array:7 [▼
    "id" => 7
    "created_at" => "2017-08-10 15:47:09"
    "updated_at" => "2017-08-10 15:50:37"
    "parent_id" => 0
    "children" => array:1 [▼
      0 => array:7 [▼
        "id" => 8
        "created_at" => "2017-08-10 15:47:20"
        "updated_at" => "2017-08-10 15:50:48"
        "parent_id" => 7
        "children" => array:1 [

       0 => array:7 [
            "id" => 9
            "created_at" => "2017-08-10 15:49:17"
            "updated_at" => "2017-08-10 15:51:08"
            "parent_id" => 8
            "children" => []
          ]
        ]
] ] ] ]

 

创建一个方法

 1     public function getCategoryChildrenIds($data, $lev = 0)
 2     {
 3         $arr = [];
 4         foreach ($data as $key => $value) {
 5             if ($lev) {
 6                 $arr[] = $value->id;
 7             }
 8 
 9             if( isset($value['children'])) {
10                 $childLev = $lev + 1;
11                 $arr = array_merge($arr, self::getCategoryChildrenIds($value['children'], $childLev));
12 
13             }
14 
15         }
16         return $arr;
17     }

获取顶级下所有下级id

array:5 [▼
  0 => 2
  1 => 3
  2 => 5
  3 => 8
  4 => 9
]

 

转载于:https://www.cnblogs.com/smallyi/p/7421719.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值