首頁  >  文章  >  後端開發  >  php數組怎麼轉為樹型數組

php數組怎麼轉為樹型數組

zbt
zbt原創
2023-08-04 17:30:481310瀏覽

php數組轉為樹型數組的方法:1、理解樹型數組的結構和概念,在樹型數組中,每個元素都有一個唯一的標識符和一個父元素的標識符;2、準備範例數組,建立一個普通的關聯數組,其中包含一些項目和它們的父元素標識符;3、創建一個轉換函數,將創建一個函數來將普通的數組轉換為樹型數組;4、呼叫轉換函數並輸出結果即可。

php數組怎麼轉為樹型數組

本教學操作環境:windows10系統、php8.1.3版本、DELL G3電腦。

在PHP中,陣列是一種非常常見且實用的資料結構。有時候,我們需要將普通的陣列轉換為樹型數組,以便更方便地對資料進行組織和展示。本文將介紹如何將PHP陣列轉換為樹型陣列。

1. 理解樹型數組的結構和概念

在樹型數組中,每個元素都有一個唯一的標識符和一個父元素的標識符。父元素的標識符可以透過與子元素的標識符進行匹配來確定元素之間的層次關係。樹型陣列的結構類似樹狀結構,其中頂層元素稱為根元素,子元素可以是葉子節點或其他分支節點。

2. 準備範例數組

作為範例,我們建立一個普通的關聯數組,其中包含一些項目和它們的父元素標識符,如下所示:

$data = array(
array('id' => 1, 'name' => '项目1', 'parent_id' => 0),
array('id' => 2, 'name' => '项目1.1', 'parent_id' => 1),
array('id' => 3, 'name' => '项目1.2', 'parent_id' => 1),
array('id' => 4, 'name' => '项目1.1.1', 'parent_id' => 2),
array('id' => 5, 'name' => '项目2', 'parent_id' => 0),
array('id' => 6, 'name' => '项目2.1', 'parent_id' => 5),
array('id' => 7, 'name' => '项目2.2', 'parent_id' => 5),
);

以上數組中包含了一些項目,其中父元素標識符為0的元素是根元素。

3. 建立一個轉換函數

接下來,我們將建立一個函數來將普通的陣列轉換為樹型陣列。首先,我們需要定義一個遞歸函數來遍歷陣列並建立樹。函數將接收兩個參數:輸入數組和父元素標識符。

function buildTree(array $data, $parentId = 0) {
$tree = array();
foreach ($data as $row) {
if ($row['parent_id'] == $parentId) {
$children = buildTree($data, $row['id']);
if ($children) {
$row['children'] = $children;
}
$tree[] = $row;
}
}
return $tree;
}

在上述程式碼中,我們先建立了一個空數組$tree,然後使用foreach循環遍歷輸入數組$data。如果元素的父元素標識符與傳入的父元素標識符相同,則建立一個名為$children的子數組,並將遞歸呼叫buildTree()函數將子元素新增至$children。如果$children不為空數組,則將其附加到目前行的"children"鍵上。最後,將目前行加入$tree數組中。

4. 呼叫轉換函數並輸出結果

接下來,我們只需呼叫buildTree()函數,並將範例陣列作為參數傳遞進去。然後,我們可以使用print_r()函數或var_dump()函數列印結果來驗證轉換是否成功。

$treeData = buildTree($data);
print_r($treeData);

運行以上程式碼,您將會看到樹型陣列的輸出結果:

Array
(
[0] => Array
(
[id] => 1
[name] => 项目1
[parent_id] => 0
[children] => Array
(
[0] => Array
(
[id] => 2
[name] => 项目1.1
[parent_id] => 1
[children] => Array
(
[0] => Array
(
[id] => 4
[name] => 项目1.1.1
[parent_id] => 2
)
)
)
[1] => Array
(
[id] => 3
[name] => 项目1.2
[parent_id] => 1
)
)
)
[1] => Array
(
[id] => 5
[name] => 项目2
[parent_id] => 0
[children] => Array
(
[0] => Array
(
[id] => 6
[name] => 项目2.1
[parent_id] => 5
)
[1] => Array
(
[id] => 7
[name] => 项目2.2
[parent_id] => 5
)
)
)
)

可以看到,我們成功地將普通的陣列轉換為了樹型陣列。

總結

本文介紹如何將PHP陣列轉換為樹型陣列。透過理解樹型數組的結構和概念,創建一個遞歸函數來建立樹,並呼叫該函數來轉換數組。這樣,您就可以方便地對資料進行組織和展示

以上是php數組怎麼轉為樹型數組的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn