[英]How to build a tree in PHP?
我有傳入的POST數組:
$parameters = array("1" , "2" , "3", "4", "5");
$parents = array("null" , "1" , "1", "3", "3");
$values = array("A" , "B" , "C", "D", "E");
$parameters
的數量是無限的。
因此,我需要構建帶有嵌套參數的樹。
結果輸出應為:
1 -> {2 => value, 3 -> {4 => value, 5 => value}}
我嘗試使用以下循環:
foreach ($parameters["parameters"] as $index => $id) {
if(!is_null($parameters["parents"][$index])){
$output[$parameters["parents"][$index]][] = $id;
}
}
但這僅適用於一個樹級別,我想我需要使用遞歸方法。
通過將根元素的引用保留在array() $refs
可以使用迭代方法。
這里的代碼缺少具有子元素的元素的值-這是您的要求-但您可以在結果array
使用顯式鍵來保留它的value => ..., children => array()
-例如說value => ..., children => array()
。
$parameters = array('1', '2', '3', '4', '5');
$parents = array('null', '1', '1', '3', '3');
$values = array( 'A', 'B', 'C', 'D', 'E');
$tree = array();
$refs = array();
foreach ($parameters as $key=>$val) {
if (isset($refs[$parents[$key]])) {
if(!is_array($refs[$parents[$key]]))
$refs[$parents[$key]] = array();
$refs[$parents[$key]][$val] = $values[$key];
$refs[$val] = &$refs[$parents[$key]][$val];
} else {
$tree[$val] = $values[$key];
$refs[$val] = &$tree[$val];
}
}
print_r($tree);
上面將打印:
Array
(
[1] => Array
(
[2] => B
[3] => Array
(
[4] => D
[5] => E
)
)
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.