簡體   English   中英

PHP遍歷數組並插入鍵/值

[英]PHP Iterate over array and insert key/value

我有一個正在處理的員工數據數組,將其轉換為JSON並將其傳遞給插件以創建組織結構圖。 組織結構圖具有多個級別,我的目標是對這些級別進行顏色編碼以顯示不同的組織。

我的數組是嵌套的,具有managerchildren

我試圖弄清楚如何遍歷此數組並為不同級別分配顏色。

例如,數組的第一層是藍色,下一層是紅色,等等。我要做的就是添加class的鍵,然后將其值添加為levelx(其中x是層數深)。

這里的最終目標是能夠弄清楚如何在同一級別的所有記錄上添加相同的鍵/值。

這是帶有class key的數組的示例。

是否有任何PHP函數可以確定其在嵌套數組中的級別,從而使此操作更容易?

Array
(
    [0] => Array
        (
            [QID] => Q1234
            [MgrQID] => Array
                (
                )

            [NTID] => xxxxx
            [MgrNTID] => xxxx
            [title] => xxxx
            [MgrName] => xxxx
            [name] => Bob Jones
            [class] => level1
            [CountOfDirects] => 9
            [children] => Array
                (
                    [0] => Array
                        (
                            [QID] => Q56789
                            [MgrQID] => 1234
                            [NTID] => xxxx
                            [MgrNTID] => xxxx
                            [title] => xxxx
                            [MgrName] => xxxx
                            [name] => Tim Cook
                            [class] => level2
                            [CountOfDirects] => 0
                            [children] => Array
                                (
                                )

                        )

                    [1] => Array
                        (
                            [QID] => Q5678
                            [MgrQID] => Q1234
                            [NTID] => xxxxx
                            [MgrNTID] => xxxx
                            [title] => xxxx
                            [MgrName] => xxxx
                            [name] => Bob Tom
                            [class] => level2
                            [CountOfDirects] => 0
                            [children] => Array
                                (
                                )

                        )


                    [2] => Array
                        (
                            [QID] => Q9999
                            [MgrQID] => Q1234
                            [NTID] => xxxx
                            [MgrNTID] => xxxx
                            [title] => xxxx
                            [MgrName] => xxxx
                            [name] => xxxx
                            [class] => level2
                            [CountOfDirects] => 0
                            [children] => Array
                                (
                                )

                        )

                    [3] => Array
                        (
                            [QID] => Q6665
                            [MgrQID] => Q1234
                            [NTID] => xxxx
                            [MgrNTID] => xxxx
                            [title] => xxxx
                            [MgrName] => xxxx
                            [name] => xxxx
                            [class] => level2
                            [CountOfDirects] => 6
                            [children] => Array
                                (
                                    [0] => Array
                                        (
                                            [QID] => Q4322
                                            [MgrQID] => Q6665
                                            [NTID] => xxxx
                                            [MgrNTID] => xxxx
                                            [title] => xxxx
                                            [MgrName] => xxxx
                                            [name] => xxxx
                                            [class] => level3
                                            [CountOfDirects] => 0
                                            [children] => Array
                                                (
                                                )

                                        )

                                    [1] => Array
                                        (
                                            [QID] => Q3333
                                            [MgrQID] => Q6665
                                            [NTID] => xxxx
                                            [MgrNTID] => xxxx
                                            [title] => xxxx
                                            [MgrName] => xxxx
                                            [name] => xxxx
                                            [class] => level3
                                            [CountOfDirects] => 0
                                            [children] => Array
                                                (
                                                )

                                        )


                                )

                        )


                )

        )

)

我將創建一個函數來遞歸遍歷數組:

function setLevel(&$arr, $level)
{
    foreach ($arr as &$element) {
        $element['class'] = 'level-' . $level;
        setLevel($element['children'], $level + 1);
    }
}

setLevel($arr, 1);

參見演示

暫無
暫無

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

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