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

php array tree

張明哲1年前8瀏覽0評論

PHP是一門非常強大的編程語言,其中的數組操作也是非常方便和實用的。而在數組操作中,php array tree也是一種常用的數據結構,在處理樹形數據時尤為方便。本文將詳細介紹php array tree的使用。

什么是php array tree?也就是將一個多維數組以樹形結構呈現的方法。例如,下面這個多維數組:

array(
array(
'id'       =>1,
'name'     =>'John',
'children' =>array()
),
array(
'id'       =>2,
'name'     =>'Jane',
'children' =>array(
array(
'id'       =>3,
'name'     =>'Bob',
'children' =>array()
),
array(
'id'       =>4,
'name'     =>'Mary',
'children' =>array(
array(
'id'       =>5,
'name'     =>'Alice',
'children' =>array()
),
array(
'id'       =>6,
'name'     =>'Tom',
'children' =>array()
)
)
)
)
)
);

通過php array tree,我們可以將其呈現為以下形式:

[+] John
[+] Jane
|-->[-] Bob
|-->[+] Mary
        |-->[-] Alice
        |-->[-] Tom

其中,[+]表示該節點有子節點,[-]表示該節點沒有子節點。

那么,如何將一個多維數組轉換為php array tree呢?我們可以通過遞歸函數實現,示例代碼如下:

function toTree(array $arr, $parentId = null) {
$tree = array();
foreach ($arr as $k =>$item) {
if ($item['parentId'] == $parentId) {
unset($arr[$k]);
$item['children'] = toTree($arr, $item['id']);
$tree[] = $item;
}
}
return $tree;
}

其中,toTree函數接收一個多維數組和一個parentId參數(默認為null),返回通過遞歸處理后的php array tree。代碼中,我們首先定義一個空數組$tree用于存儲處理后的結果;然后遍歷$arr數組中的每個元素,如果其parentId等于當前傳入的$parentId,則將該元素從原數組中刪除,并將其子節點作為參數遞歸調用toTree函數,并將返回值存入$item['children']中,最后將$item添加到$tree數組中。

最后,我們來看一個實際應用php array tree的例子。假設我們有一個數據庫表,表中存儲了課程分類的信息,其中每個分類之間是通過parent_id關聯的。現在我們想要將這些分類以樹形結構展示在頁面上,該怎么做呢?

首先,我們需要從數據庫中查詢出所有的分類信息:

$categories = $db->query('SELECT id, name, parent_id FROM course_categories')->fetchAll(PDO::FETCH_ASSOC);

然后,我們可以使用toTree函數將查詢結果轉換為php array tree:

$tree = toTree($categories);

最后,我們可以使用遞歸函數遍歷$tree數組,并以html列表形式呈現在頁面上:

function renderTree(array $tree, $level = 0) {
if (empty($tree)) {
return '';
}
$html = '';
foreach ($tree as $node) {
$hasChildren = ! empty($node['children']);
$html .= "<li>";
$html .= "{$node['name']}";
if ($hasChildren) {
$html .= "<ul>";
$html .= renderTree($node['children'], $level + 1);
$html .= "</ul>";
}
$html .= "</li>";
}
return $html;
}
$html = "<ul>" . renderTree($tree) . "</ul>";
echo $html;

在上述代碼中,我們定義了renderTree函數用于遞歸地遍歷php array tree,其中$level參數表示當前節點的層數(用于根據層數設置不同的樣式)。在函數中,我們首先檢測當前節點是否有子節點,如果有則將子節點以一個html列表嵌套的方式呈現在當前節點下面。最后,我們將返回的html字符串包裹在一個ul標簽中,并輸出到頁面上。

以上就是php array tree的介紹以及一個實際應用的例子。php array tree能夠方便地將一個多維數組以樹形結構展示出來,在許多場景下非常實用。