我有一个我正在使用的员工数据数组,我将其转换为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);
请参阅演示。