【发布时间】:2021-05-22 16:51:01
【问题描述】:
我有这样的数组:
(
[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
)
)
我想像下面屏幕截图中的树一样对这个数组进行排序: Screen of tree what I want
我尝试使用这个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;
}
}
}
对我来说最重要的是选择时一切都显示得很好,是这样的:
-Playstation
-- Playstation 5
--- 格里
--Playstation 3
--- 格里
谁能帮帮我?
【问题讨论】:
-
你尝试了什么?最简单的解决方案是以多级数组的形式创建类别树。要按子数组的值排序,您应该使用usort(),但是使用“我想要”+屏幕截图并不能很好地描述您的问题。即使使用屏幕截图,也可以将其包含在此处并内联显示,而不是链接到第三方服务。
-
@biesior 好的,对不起,我更正了帖子,希望你现在能更好地理解它
-
你这里有父子元素之间的关系,所以你需要创建一个代表树的嵌套数组,你可以使用 PHP 或 JS 来完成,取决于你的需要。如果我理解正确,当它在代码的另一部分(用于选择)中工作时,您可以检查它是如何在那里完成并复制解决方案。
-
我不太明白我怎么能做到这一点
-
使用递归从数据库中获取数据更容易创建树,您可以这样访问它还是只有这个数组?
标签: php arrays sorting relationship