Tôi có một mảng với các phím sauFlat PHP Array Hierarchy Tree
id
parent_id
name
Một mảng mẫu:
array(7) {
[0]=>
array(3) {
["id"]=>
string(1) "4"
["parent_id"]=>
string(1) "0"
["name"]=>
string(16) "Top Level Page 4"
}
[1]=>
array(3) {
["id"]=>
string(1) "5"
["parent_id"]=>
string(1) "1"
["name"]=>
string(19) "Second Level Page 1"
}
[2]=>
array(3) {
["id"]=>
string(1) "6"
["parent_id"]=>
string(1) "2"
["name"]=>
string(19) "Second Level Page 2"
}
[3]=>
array(3) {
["id"]=>
string(1) "7"
["parent_id"]=>
string(1) "5"
["name"]=>
string(18) "Third Level Page 1"
}
[4]=>
array(3) {
["id"]=>
string(1) "3"
["parent_id"]=>
string(1) "0"
["name"]=>
string(16) "Top Level Page 3"
}
[5]=>
array(3) {
["id"]=>
string(1) "2"
["parent_id"]=>
string(1) "0"
["name"]=>
string(16) "Top Level Page 2"
}
[6]=>
array(3) {
["id"]=>
string(1) "1"
["parent_id"]=>
string(1) "0"
["name"]=>
string(16) "Top Level Page 1"
}
}
Những gì tôi muốn làm là hiển thị một cây phân cấp sử dụng mảng này, mã tôi hiện đang sản xuất:
Top Level Page 4
--Second Level Page 1
---Second Level Page 2
----Third Level Page 1
Top Level Page 3
Top Level Page 2
Top Level Page 1
Lý tưởng nhất là tôi cần tạo ra kết quả dưới đây nhưng với unlimi mức ted:
Top Level Page 4
-Second Level Page 1
-Second Level Page 2
--Third Level Page 1
Top Level Page 3
Top Level Page 2
Top Level Page 1
Code tôi có cho đến nay là:
$level = 1;
foreach ($data as $row) {
if ($row['parent_id'] == 0) {
echo $row['name'] . '<br/>';
} else {
$level++;
foreach ($data as $m) {
if ($m['parent_id'] === $row['parent_id']) {
$c = 0;
$append = '';
while ($c < $level) {
$append.="-";
$c++;
}
echo $append . $row['name'] . '<br/>';
}
}
}
}
}
Nếu bất cứ ai có thể cho tôi một số gợi ý về cách để đạt được điều này nó sẽ được nhiều đánh giá cao.
Tôi đã tìm thấy giải pháp tại đây: Create nested list from PHP array for dropdown select field
"Ý của bạn là: đệ quy"? – ficuscr
http://stackoverflow.com/questions/8840319/build-a-tree-from-a-flat-array-in-php hoặc http://stackoverflow.com/questions/4216875/php-reorder-array-to -reflect-parent-id-hierarchy hoặc http://stackoverflow.com/questions/2915748/how-can-i-convert-a-series-of-parent-child-relationships-into-a-hierarchical-tre – ficuscr