Приветствую!
Имеется массив
$data = array(
0 => array(
['id'] => 2,
['pagetitle'] => 'Главная',
['parent'] => 0
),
1 => array(
['id'] => 3,
['pagetitle'] => 'Категория',
['parent'] => 2
),
2 => array(
['id'] => 100,
['pagetitle'] => 'Подкатегория',
['parent'] => 5
),
);
Главная (id2)
-- Категория (id3)
-- Подкатегория (id5)
-- Подкатегория (id100)
-- Категория2 (id7)
-- Подкатегория (id55)
...
Как получить данные родительской категории для всех подкатегорий? Т.е. в подкатегориях с id100 , id5 данные из категории id3. Вложенность подкатегорий дохододит до 5 уровней и может измениться.
Пытаюсь получить
$category = array(
100 => array( // id подкатегории
['parent'] => 3, // id категории
['pagetitle'] => 'Категория',
),
5 => array( // id подкатегории
['parent'] => 3, // id категории
['pagetitle'] => 'Категория',
,
);
Т.е. у всех подкатегорий категории (id3) должны быть ['parent'] => 3, ['pagetitle'] => 'Категория'. А у всех подкатегорий Категория2 (id7) ['parent'] => 7, ['pagetitle'] => 'Категория2'.
Попытался решить так$category = array();
foreach ($data as $value) {
if ( $value['parent'] != 2 ) {
$parent = replaceParentCategory( $value, $data );
$category[$value['id']]['pagetitle'] = $parent['pagetitle'];
$category[$value['id']]['parent'] = $parent['id'];
} else {
$category[$value['id']]['pagetitle'] = $value['pagetitle'];
$category[$value['id']]['parent'] = $value['parent'];
}
}
function replaceParentCategory( $value, $data ){
foreach ($data as $item) {
if ( $value['parent'] == $item['id'] ){
if ( $item['parent'] == 2 ) return $value;
$value['parent'] = $item['parent'];
$value['pagetitle'] = $item['pagetitle'];
return replaceParentCategory( $value, $data );
}
}
}
Но в результат
$category = array(
100 => array( // id подкатегории
['parent'] => 100, // id категории
['pagetitle'] => 'Категория',
),
...
);