基本上我有这个数组$data
:
Array
(
[0] => Array
(
[id] => 2
[parent] => 0
[title] => produit 1
[path] => produit-1
)
[1] => Array
(
[id] => 3
[parent] => 0
[title] => Produit 2
[path] => produit-2
)
[2] => Array
(
[id] => 4
[parent] => 0
[title] => Produit 3
[path] => produit-3
)
[3] => Array
(
[id] => 5
[parent] => 0
[title] => Produit 4
[path] => produit-4
)
[4] => Array
(
[id] => 6
[parent] => 2
[title] => Sous produit 10
[path] => sous-produit-10
)
[5] => Array
(
[id] => 7
[parent] => 2
[title] => Sous produit 11
[path] => sous-produit-11
)
)
我想检查data[$key]['parent']
中是否存在['id']
,如果是,它会将数组的title
与其父级连接起来:
Array
(
[produit 1] => Array
(
[0] => Sous produit 11
[1] => Sous produit 10
)
[Produit 2] => Produit 2
[Produit 3] => Produit 3
[Produit 4] => Produit 4
)
这是我尝试过但没有做的事情:
foreach ($data as $key => $value) {
$rslt[$value['id']]= $value;
}
$output = array();
foreach ($rslt as $key => $value) {
if(array_key_exists($value['parent'],$rslt)){
$new_key = $rslt[$value['parent']]['title'];
$output[$new_key][] = $value['title'];
}
else $output[$value['title']] = $value['title'];
}
我能做到这一点吗?非常明确。
答案 0 :(得分:0)
您尝试按标题获取父级,但您将父级ID保存为键
// create id => data array
foreach($data as $key => $value) {
$rslt[$value['id']] = $value;
}
$output = array();
// create id => labels array
foreach($rslt as $key => $value) {
if(array_key_exists($value['parent'], $rslt)) {
// append title to parent
$output[$value['parent']][] = $value['title'];
} else {
// forgot to add parents
$output[$value['id']] = array($value['title']);
}
}
$final = array();
// create parent label => labels array
foreach($output as $key => $value) {
$final[$value[0]] = $value; // parent will always be first array item
}