PHP-向多维数组添加级别
我有一个多维数组,我想为多维数组中的每个数组添加一个键和值。该值必须是数组在多维数组中的深度级别 例如:PHP-向多维数组添加级别,php,arrays,recursion,multidimensional-array,Php,Arrays,Recursion,Multidimensional Array,我有一个多维数组,我想为多维数组中的每个数组添加一个键和值。该值必须是数组在多维数组中的深度级别 例如: Array( [0] Array ( [id] 1 [parentid] null [0] Array ( [id] 101 [parentid] 1 [1] Array
Array(
[0] Array
(
[id] 1
[parentid] null
[0] Array
(
[id] 101
[parentid] 1
[1] Array
(
[id] 2
[parentid] null
[0] Array
(
[id] 161
[parentid] 2
[children] Array
(
[0] Array
(
[id] 300
[parentid] 161
)
预期产出:
Array(
[0] Array
(
[id] 1
[parentid] null
[level] 1
[0] Array
(
[id] 101
[parentid] 1
[level] 2
[1] Array
(
[id] 2
[parentid] null
[level] 1
[0] Array
(
[id] 161
[parentid] 2
[level] 2
[children] Array
(
[0] Array
(
[id] 300
[parentid] 161
[level] 3
)
}
}
我不知道它是否相关,但为什么不使用像这样的库呢
它具有针对此类问题构建的功能
// Get a node's ID
$id = $node->getId();
// Get the node's hierarchical level (1-based)
$level = $node->getLevel();
我不知道它是否相关,但为什么不使用像这样的库呢
它具有针对此类问题构建的功能
// Get a node's ID
$id = $node->getId();
// Get the node's hierarchical level (1-based)
$level = $node->getLevel();
您基本上希望使用一个递归函数,该函数与数组的 通过将参数
&$foo
与前面的&
一起使用,可以将其指定为对该对象的引用
对于数组,它不会复制修改,而是对原始传递的数组执行修改
编辑在注释中添加了建议,以将&value
作为参考
现场观看:
您基本上希望使用一个递归函数,该函数与数组的
通过将参数&$foo
与前面的&
一起使用,可以将其指定为对该对象的引用
对于数组,它不会复制修改,而是对原始传递的数组执行修改
编辑在注释中添加了建议,以将&value
作为参考
现场观看:
您是如何做到这一点的?这应该没有那么困难,你可以检查那里:-你有什么尝试让这件事做?这应该没有那么难,你可以检查那里:-我认为它会帮助你。显然,因为否则你就不会发布它;)我使用这个函数来构建我的树结构。但我不知道如何将数组的当前级别添加到数组中。是否将级别存储在DB中?否,该级别尚未存储在数据库中。我正在尝试在数组中添加级别,并希望使用该数组在数据库中插入数据。我认为这会对您有所帮助。显然,否则您不会发布它;)我使用这个函数来构建我的树结构。但我不知道如何将数组的当前级别添加到数组中。是否将级别存储在DB中?否,该级别尚未存储在数据库中。我试图在数组中添加级别,并希望使用该数组在数据库中插入数据。可能是,但我尚未使用该库。可能是,但我尚未使用该库。小问题:我认为OP希望将level
字段设置为数据的嵌套级别,而不是id
字段。否则答案很好。小问题:我认为OP希望level
字段设置为数据的嵌套级别,而不是id
字段。否则答案很好。
// Get a node's ID
$id = $node->getId();
// Get the node's hierarchical level (1-based)
$level = $node->getLevel();
<?php
$array = [
'hello' => 'world',
'doing' => [
'hello' => 'universe',
'going' => [
'hello' => 'existence'
],
'moving' => [
'answer' => 42,
]
]
];
function levelUp(&$array, $level = 1)
// ^-- See that one? that's the magic.
{
$array['level'] = $level;
foreach($array as $key => &$value) {
// ^-- important to add that & here too
if(is_array($value)) {
levelUp($value, $level + 1);
}
}
}
levelUp($array);
var_dump($array);