我在多层阵列中有以下数据
1: id: 41, parent: null, name: lucas
2: id: 52, parent: null, name: george
3: id 98: parent: 41, name: julian
...
每当我运行一个"parent"未设置为null的条目时,我需要循环遍历这个数组和一个'childrens'
键和值到父项,同时将+1和这个值相加。如何做到这一点?
1: id: 41, parent: null, name: lucas, children: 1
我在foreach
里试过这个
foreach($post as $parsedPost) {
if($parsedPost['parent'] > 0){
$idChild = $parsedPost['id'];
$idParent = $parsedPost['parent'];
$post[$idParent]["childrens"]++;
}
}
当然,它会返回一个通知,因为索引['childrens']
不存在。此外,它将childrens:value
添加到第一个子项,而不是添加到父项。为什么?
希望这能有所帮助。
$post[] = ["id" => "41", "parent" => null, "name" => "lucas"];
$post[] = ["id" => "52", "parent" => null, "name" => "george"];
$post[] = ["id" => "98", "parent" => "41", "name" => "Julian"];
foreach ($post as $parsedPost)
{
if ($parsedPost['parent'] > 0 && $parsedPost['parent'] != "")
{
$idChild = $parsedPost['id'];
$idParent = $parsedPost['parent'];
$parentKey = array_search($idParent,array_column($post,'id'));
if(!isset($post[$parentKey]["childrens"]))
{
$post[$parentKey]["childrens"] = 0;
}
$post[$parentKey]["childrens"]++;
}
}
print_r($post);
输出:
Array
(
[0] => Array
(
[id] => 41
[parent] =>
[name] => lucas
[childrens] => 1
)
[1] => Array
(
[id] => 52
[parent] =>
[name] => george
)
[2] => Array
(
[id] => 98
[parent] => 41
[name] => Julian
)
)