Php 将父ID分配给多维数组的子级
我需要在PHP中将父ID分配给多维数组的所有子数组Php 将父ID分配给多维数组的子级,php,arrays,Php,Arrays,我需要在PHP中将父ID分配给多维数组的所有子数组 Array ( [expanded] => 1 [key] => root_1 [title] => root [children] => Array ( [0] => Array ( [folder] => 1 [key] =
Array
(
[expanded] => 1
[key] => root_1
[title] => root
[children] => Array
(
[0] => Array
(
[folder] => 1
[key] => 34
[title] => YAY PROJECTS
)
[1] => Array
(
[expanded] => 1
[folder] => 1
[key] => 6
[title] => Grand Designs Episodes
[children] => Array
(
[0] => Array
(
[folder] => 1
[key] => 8
[title] => AU Episodes
)
[1] => Array
(
[expanded] => 1
[folder] => 1
[key] => 7
[title] => UK Episodes
[children] => Array
(
[0] => Array
(
[folder] =>
[key] => 9
[title] => Start something
)
[1] => Array
(
[folder] =>
[key] => 2
[title] => Grand Designs Season 10
)
)
)
)
)
[2] => Array
(
[expanded] => 1
[folder] => 1
[key] => 5
[title] => Animations
[children] => Array
(
[0] => Array
(
[folder] =>
[key] => 4
[title] => Futurama Episode 191
)
[1] => Array
(
[folder] =>
[key] => 3
[title] => Miniscule Series 5 Ep 1
)
[2] => Array
(
[folder] =>
[key] => 1
[title] => The Simpsons Episode 459
)
)
)
[3] => Array
(
[folder] => 1
[key] => 11
[title] => Test Folder
)
[4] => Array
(
[folder] => 1
[key] => 10
[title] => Testing
)
)
)
起初,我认为这相当简单,但是我的解决方案很快就崩溃了,分配了错误的父ID
public function generateParentIds(array $input, $parentId = 0)
{
$return = [];
foreach ($input as $key => $value) {
if (is_array($value)) {
$value = $this->generateParentIds($value, $parentId);
if (isset($value['children'])) {
$parentId = $value['key'];
}
if (!is_int($key)) {
$return['parent_id'] = $parentId;
}
}
$return[$key] = $value;
}
return $return;
}
我不确定发生了什么,我做了很多研究,但找不到任何例子,因此我非常感谢您的帮助。假设每个孩子都应该得到直接父母的
键
值作为其父母id
,这应该可以满足您的需要。请注意,它就地修改数组($input
通过引用传递给函数,而foreach循环使用对$child
的引用),而不是尝试合并返回值
function generateParentIds(&$input, $parentId = 0) {
$input['parent_id'] = $parentId;
if (isset($input['children'])) {
foreach ($input['children'] as &$child) {
generateParentIds($child, $input['key']);
}
}
}
generateParentIds($input);
输出太长,无法在此显示,但存在一个哪些是父ID?是将顶级父id分配给所有子代,还是每个数组都获得其直接父代的父id?您期望的输出是什么?如果不做有条件的猜测,就更容易理解。对不起,我应该澄清一下。每个孩子都需要直系父母的钥匙谢谢你,尼克!使用参考资料更有意义。@Tim不用担心,我很高兴能帮上忙。