PHP迭代数组并插入键/值
我有一个正在使用的员工数据数组,我将其转换为JSON并将其传递给插件以创建组织结构图。组织结构图有多个级别,我的目标是对这些级别进行颜色编码,以显示不同的组织 我的数组是嵌套的,包含管理器和子数组 我试图找出如何循环这个数组并为不同的级别指定颜色 例如,数组的第一个级别是蓝色,下一个级别是红色等等。我需要做的就是为类添加一个键,然后添加它的值,即levelx,其中x是它的深度级别数 这里的最终目标只是能够弄清楚如何在同一级别的所有记录上添加相同的键/值 下面是一个使用类键的数组示例 是否有任何PHP函数可以在嵌套数组中确定其级别,从而使这变得更容易PHP迭代数组并插入键/值,php,arrays,json,Php,Arrays,Json,我有一个正在使用的员工数据数组,我将其转换为JSON并将其传递给插件以创建组织结构图。组织结构图有多个级别,我的目标是对这些级别进行颜色编码,以显示不同的组织 我的数组是嵌套的,包含管理器和子数组 我试图找出如何循环这个数组并为不同的级别指定颜色 例如,数组的第一个级别是蓝色,下一个级别是红色等等。我需要做的就是为类添加一个键,然后添加它的值,即levelx,其中x是它的深度级别数 这里的最终目标只是能够弄清楚如何在同一级别的所有记录上添加相同的键/值 下面是一个使用类键的数组示例 是否有任何P
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);
请参阅。您有级别限制吗?@RayannNayran没有级别限制。这可能是5层或20层,取决于有多少员工在被查看的人下面。您是否尝试过任何方法来实现它?我可以使用正常循环遍历阵列,但我无法区分它所处的级别。我有权访问循环中的种子,但它们都不同,这给了我一个不同的类,每个记录,而不是像我打算的那样将它们分组好,把它放在你的问题中,这样我们可以看到这一点,并帮助你更好!这完全符合我的需要。非常感谢。我很高兴这对你有帮助。