php 获取当前分类id所有上级分类id

function getParents($id, $list,$parents = [])
{
    //改变数组的key值
    $list = array_column($list, NULL, 'id');

   // echo "<pre>";  print_r($list);die;
    //改变后的数组
//    $list = [
//        1 => ['id' => 1, 'name' => '陕西', 'parent_id' => 0],
//        2 => ['id' => 2, 'name' => '西安', 'parent_id' => 1],
//        3 => ['id' => 3, 'name' => '长安区', 'parent_id' => 2],
//        4 => ['id' => 4, 'name' => '河南', 'parent_id' => 0],
//        5 => ['id' => 5, 'name' => '郑州', 'parent_id' => 4],
//        6 => ['id' => 6, 'name' => '河北', 'parent_id' => 0],
//        7 => ['id' => 7, 'name' => '石家庄', 'parent_id' => 6],
//        8 => ['id' => 8, 'name' => '新华区', 'parent_id' => 7]
//    ];

    if(!isset($list[$id])) {
        return [];
    }
    $parents[] = $id;
    $info = $list[$id];
    //print_r($info);
    if ($info['parent_id'] == 0) {
        return $parents;
    }

    return getParents($info['parent_id'], $list, $parents);
}

 

开始调用

    $list = [
           ['id' => 1, 'name' => '陕西', 'parent_id' => 0],
           ['id' => 2, 'name' => '西安', 'parent_id' => 1],
           ['id' => 3, 'name' => '长安区', 'parent_id' => 2],
           ['id' => 4, 'name' => '河南', 'parent_id' => 0],
           ['id' => 5, 'name' => '郑州', 'parent_id' => 4],
           ['id' => 6, 'name' => '河北', 'parent_id' => 0],
           ['id' => 7, 'name' => '石家庄', 'parent_id' => 6],
           ['id' => 8, 'name' => '新华区', 'parent_id' => 7]
    ];

$ids = getParents(5, $list);

echo "<pre>";print_r($ids);

//效果如下
Array
(
    [0] => 5
    [1] => 4
)

 

posted @ 2021-12-17 16:02  浪、子  阅读(517)  评论(0编辑  收藏  举报