簡體   English   中英

從帶有嵌套數據結構的平面數組中獲取所有子項

[英]Get all children items from flat array with nested data structure

我有一系列扁平的類別。 所有類別都有ID,Parent_id和Name。

根類別的Parent_id等於null。 他們有一些子類別,這些子類別可能會將其作為父母,而他們可能是一些子類別,並將其作為父母。 (他們可能有很多關卡)。 我可以通過單個查詢將所有類別放入平面數組。 我需要的是-如果我選擇一個類別(或子類別),如何獲得該類別中所有嵌套類別(子類別,子子類別)的列表? 有這個問題的堆棧:(

數組看起來像這樣:

Array
(
[0] => Array
    (
        [pk_i_id] => 2
        [fk_i_parent_id] => 
        [i_expiration_days] => 30
        [i_position] => 0
        [b_enabled] => 1
        [b_price_enabled] => 1
        [s_icon] => 
    )

[1] => Array
    (
        [pk_i_id] => 4
        [fk_i_parent_id] => 
        [i_expiration_days] => 30
        [i_position] => 6
        [b_enabled] => 1
        [b_price_enabled] => 1
        [s_icon] => 
    )

[2] => Array
    (
        [pk_i_id] => 12
        [fk_i_parent_id] => 
        [i_expiration_days] => 60
        [i_position] => 11
        [b_enabled] => 1
        [b_price_enabled] => 1
        [s_icon] => 
    )

[3] => Array
    (
        [pk_i_id] => 13
        [fk_i_parent_id] => 108
        [i_expiration_days] => 30
        [i_position] => 0
        [b_enabled] => 1
        [b_price_enabled] => 1
        [s_icon] => 
    )

您可以使用遞歸。 它看起來像這樣:

function outTree(array $tree, $parentId = null) {
    echo '<ul>';
    foreach ($tree as $row) {
        if ($row['fk_i_parent_id'] == $parent_id) {
            echo '<li>' . $row['pk_i_id'];
            echo outTree($tree, $row['pk_i_id']);
            echo '</li>';
        }
    }
    echo '</ul>';
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM