[英]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.