简体   繁体   English

按父 ID 对所有孩子进行排序

[英]Sort all child by parent id

i have array like this:我有这样的数组:

(
    [0] => Array
        (
            [id] => 1
            [name] => Bazowa
            [parent_id] => 0
        )

    [1] => Array
        (
            [id] => 2
            [name] => Główna
            [parent_id] => 1
        )

    [2] => Array
        (
            [id] => 12
            [name] => PlayStation
            [parent_id] => 2
        )

    [3] => Array
        (
            [id] => 13
            [name] => Xbox
            [parent_id] => 2
        )

    [4] => Array
        (
            [id] => 14
            [name] => Nintendo
            [parent_id] => 2
        )

    [5] => Array
        (
            [id] => 15
            [name] => PC
            [parent_id] => 2
        )
)

and i want sort this array like tree on screenshot below: Screen of tree what I want我想在下面的屏幕截图中像树一样对这个数组进行排序:树的屏幕我想要什么

i trying use this Sort array values based on parent/child relationship我尝试使用基于父/子关系的排序数组值

        foreach($xml->children()->children() as $value) {
        if($value->active == 1) {
            $categories[] = [
                'id' => (int) $value->id,
                'name' => (string) $value->name->language,
                'parent_id' => (int) $value->id_parent
            ];
        }
    }
    $parent_ids = [];

    $parents = ['' => []];
    foreach($categories as $val) {
        $parents[$val['parent_id']][] = $val;
    }
    $sorted = $parents[''];
    dump($parents); exit;
    for($val = reset($sorted); $val; $val = next($sorted)) {
        if(isset($parents[$val[0]])) {
            foreach($parents[$val[0]] as $next) {
                $sorted[] = $next;
            }
        }
    }

The most important thing for me is that everything displays well in select, which is something like this:对我来说最重要的是在 select 中一切都显示得很好,是这样的:

-Playstation - 游戏机
-- Playstation 5 -- 游戏机 5
--- Gry --- 格里
--Playstation 3 --PlayStation 3
--- Gry --- 格里
Anyone can help me?任何人都可以帮助我吗?

EDIT: Problem solved by Build a tree from a flat array in PHP编辑:通过从 PHP 中的平面数组构建树解决的问题

This should work这应该工作

usort($arr, function($a, $b) {
 return $a["parent_id"] > $b["parent_id"];
});

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM