色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

listtotree php

衛若男1年前8瀏覽0評論

在PHP開發中,經常需要對一些列表數據進行展示和分類,此時就用到了listtotree這個函數。這個函數能夠將一個列表數據轉換為樹形數據,使得數據更加易于處理和展示。

舉個例子,比如現在有一個員工列表,該列表包含每個員工的姓名、ID、所在部門等信息。我們需要將這個列表轉換為樹形數據來展示,我們可以使用以下代碼:

$list = [
['id'=>1, 'name'=>'John', 'dept_id'=>1],
['id'=>2, 'name'=>'Mary', 'dept_id'=>1],
['id'=>3, 'name'=>'Tom', 'dept_id'=>2],
['id'=>4, 'name'=>'Lily', 'dept_id'=>2],
['id'=>5, 'name'=>'Jack', 'dept_id'=>3],
];
function list_to_tree($list, $pk='id', $pid='parent_id', $child='children', $root=0)
{
$tree = [];
$packData = [];
foreach ($list as $data) {
$packData[$data[$pk]] = $data;
}
foreach ($packData as $key =>$val) {
$parentId = $val[$pid];
if($root == $parentId) {
$tree[] =& $packData[$key];
} else {
if(isset($packData[$parentId])) {
$packData[$parentId][$child][] =& $packData[$key];
}
}
}
return $tree;
}

以上代碼中,$list代表員工列表,其中每個員工的信息都用一個數組表示。list_to_tree()函數接收一個列表,還有$pk、$pid、$child、$root等參數。

其中,$pk表示主鍵字段,默認為'id';$pid表示父級字段,默認為'parent_id';$child表示子級字段,也就是保存兒子節點的數組的屬性名,默認為'children';$root表示頂級節點的值,默認為0。

接下來的代碼實現中,$packData數組記錄了每個節點的數據,$tree數組記錄了最終的樹形結構數據。首先遍歷$packData數組,并將節點的唯一標識作為鍵值存入$packData中,這樣可以方便后面的快速查找。然后再次遍歷$packData數組,根據每個節點的父級ID來確定其在樹中的位置。如果該節點是根節點,則將其作為一個新的節點存入$tree數組;如果該節點有父節點,則將該節點添加到該父節點的$child數組中去。

最后,返回$tree數組,即可得到一個完整的樹形結構。

使用上述的代碼可以將一個員工的列表轉換為如下的樹形結構數據:

[
[ 
'id' => 1,
'name' => 'John',
'dept_id' => 1,
'children' => [
['id' => 2, 'name' => 'Mary', 'dept_id' => 1, 'children' => []]
]
],
[ 
'id' => 3,
'name' => 'Tom',
'dept_id' => 2,
'children' => [
['id' => 4, 'name' => 'Lily', 'dept_id' => 2, 'children' => []]
]
],
[ 
'id' => 5,
'name' => 'Jack',
'dept_id' => 3,
'children' => []
]
]

這樣,我們就可以很方便地在樹形結構中查找、展示、修改員工的信息。

總之,listtotree是一個非常實用的PHP函數,它可以將列表數據轉換為樹形數據,幫助我們更加輕松地處理和展示數據。在實際開發中,如果需要將列表數據展示為樹狀結構,可以使用這個函數輕松地實現。同時需要注意,此函數傳入的數據列表需要滿足指定格式。