[英]PHP Iterate over array and insert key/value
我有一個正在處理的員工數據數組,將其轉換為JSON並將其傳遞給插件以創建組織結構圖。 組織結構圖具有多個級別,我的目標是對這些級別進行顏色編碼以顯示不同的組織。
我的數組是嵌套的,具有manager
和children
。
我試圖弄清楚如何遍歷此數組並為不同級別分配顏色。
例如,數組的第一層是藍色,下一層是紅色,等等。我要做的就是添加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.