【发布时间】:2021-12-09 20:56:58
【问题描述】:
我想在下面转换一个平面数组:
$array = [
[
"hierarchy" => "1",
"title" => "Fruits",
"type" => "category_label"
],
[
"hierarchy" => "1.1",
"title" => "Citruses",
"type" => "category_label"
],
[
"hierarchy" => "1.1.1",
"title" => "Orange",
"type" => "item"
],
[
"hierarchy" => "1.1",
"title" => "Mango",
"type" => "item"
],
[
"hierarchy" => "1.2",
"title" => "Grape",
"type" => "item"
]
];
从上面可以看出,它有两个分层的点符号字符串“1.1”,因此我使用“type”属性来区分它们。
我期待什么结果:
/*
1. Fruits
- 1.1. Citruses
--- 1.1.1. Orange
-- 1.1. Mango
-- 1.2. Grape
*/
//Desired result
[
"hierarchy" => "1",
"title" => "Fruits",
"type" => "category_label",
"children" => [
[
"hierarchy" => "1.1",
"title" => "Citruses",
"type" => "category_label"
"children" => [
[
"hierarchy" => "1.1.1",
"title" => "Orange",
"type" => "item"
]
]
],
[
"hierarchy" => "1.1",
"title" => "Mango",
"type" => "item"
],
[
"hierarchy" => "1.2",
"title" => "Grape",
"type" => "item"
]
]
];
使用How to build a tree from a concatenated string in PHP? 中描述的方法我无法达到我想要的结果。 我现在能做什么?
【问题讨论】:
-
您能分享您使用演示链接尝试过的内容吗?对数组进行排序让父母先于孩子是一个好的开始。
-
请edit问题包含您当前尝试过的代码,以及它给出的输出或错误消息。
-
在你的例子中。假设“Mango”变成了“category_label”:如何确定“Orange”的去向?
标签: php arrays multidimensional-array