Answer the question
In order to leave comments, you need to log in
How to convert a one-dimensional array of book categories into a multi-dimensional array?
There is an array with categories of books of the following format
[
[code => 22, name => Учебная литература, parent => 2, level => 2],
[code => 200, name => Учебники, р/т, учебные пособия, parent => 22, level => 3],
]
[
[22 => [
name => Учебная литература,
items => [
200 => [name => Учебники, р/т, учебные пособия, items => []]
],
],
Answer the question
In order to leave comments, you need to log in
<?php
//в ПХП ваш массив будет выглядеть приблизительно так
$sourceArray = array(
0 => array(
'code' => 22,
'name' => 'Учебная литература',
'parent' => 2,
'level' => 2
),
1 => array(
'code' => 200,
'name' => 'Учебники, р/т, учебные пособия',
'parent' => 22,
'level' => 3
)
);
/*
как-то так мы создаем массив категорий вида:
22 => array(
'name' => 'Учебная литература',
)
*/
function makeCategoryArray($sourceArray)
{
$catArray = array();
foreach($sourceArray as $key=>$value){
if(isset($value)){
$catArray[$sourceArray[$key]['parent']] = array('name', $sourceArray[$key]['name']);
}
}
return $catArray;
}
/*
как-то так мы набиваем его айтемами соответствующей категории:
*/
function fillCategoryArray($catArray, $sourceArray)
{
$finalArray = array();
foreach($sourceArray as $key_source=>$value_source){
foreach($catArray as $key_cat=>$value_cat)
$catArray[$key_cat] = array('items',
$finalArray[$sourceArray[$key_source]['code']] = array('name', $sourceArray[$key_source]['name'])
);
}
return $finalArray;
}
//Создаем массив категорий:
$catArray = makeCategoryArray($sourceArray);
//набиваем
$finalArray = fillCategoryArray($catArray, $sourceArray);
print_r($finalArray); //смотрим результат
?>
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question