Есть массив
$arr = array(
[0] => array(
'name' => 'Столы/Круглые/Большие',
'products' => array(...)),
[1] => array(
'name' => 'Столы/Круглые/Маленькие',
'products' => array(...)),
[2] => array(
'name' => 'Столы/Квадратные/Маленькие',
'products' => array(...)),
[3] => array(
'name' => 'Столы/Квадратные/Большие',
'products' => array(...)),
[4] => array(
'name' => 'Стулья/Мягкие/Со спинкой',
'products' => array(...)),
[5] => array(
'name' => 'Стулья/Мягкие/Без спинки',
'products' => array(...)),
[6] => array(
'name' => 'Стулья/Жесткие/Со спинкой',
'products' => array(...)),
[6] => array(
'name' => 'Стулья/Табуретки',
'products' => array(...)),
.....
);
То есть массив, содержащий названия категорий различной вложенности товары. Надо получить из него
$arr = array(
[0] => array(
'name' => 'Столы',
'products' => array(...),
'subcats' => array(
[0] => array (
'name' => 'Круглые'
'subcats' => array (
[0] => array (
'name' => 'Большие',
'products' => array(...)),
[1] => array (
'name' => 'Маленькие',
'products' => array(...)),),
[1] => array (
'name' => 'Квадратные'
'subcats' => array (
[0] => array (
'name' => 'Большие',
'products' => array(...)),
[1] => array (
'name' => 'Маленькие',
'products' => array(...)),),),),)),
[1] => array(
'name' => 'Стулья',
'products' => array(...),
'subcats' => array(
[0] => array (
'name' => 'Мягкие',
'products' => array(...),
'subcats' => array (
[0] => array (
'name' => 'Со спинкой',
'products' => array(...)),
[1] => array (
'name'=> 'Без спинки',
'products' => array(...)),),
[1] => array (
'name' => 'Жесткие',
'products' => array(...),
'subcats' => array (
[0] => array (
'name' => 'Со спинкой',
'products' => array(...)),),),
[1] => array (
'name' => 'Табуретки',
'products' => array(...)),),)),
...
);
попробуйте эту функцию
function buildTree(array &$elements, $parentId = 0) {
$branch = array();
foreach ($elements as $element) {
if ($element['parent_id'] == $parentId) {
$children = buildTree($elements, $element['id']);
if ($children) {
$element['children'] = $children;
}
$branch[$element['id']] = $element;
unset($elements[$element['id']]);
}
}
return $branch;
}
Код за вас писать не буду, напишу лишь то, что может вам помочь.
Способ перебора массива foreach. Это поможет вам пройтись по изначальному массиву и поработать с каждым его элементом. Т.к. у вас многомерный массив, то, скорее всего, будут вложенные циклы.
Рекурсия поможет вам, если неизвестен уровень вложенности массива.
Функция explode() моможет вам разбить строку на массив по какому-то разделителю. Пример:
$name = 'Столы/Круглые/Большие';
$names = explode('/', $name);
var_dump($names);
Результат:
array(3) {
[0]=>
string(10) "Столы"
[1]=>
string(14) "Круглые"
[2]=>
string(14) "Большие"
}
Это, вроде бы, всё, что вам нужно знать, чтобы выполнить поставленную задачу.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Нашел ответ 3 летней давности где предлагается использовать
У меня возникла проблема при изучение работы с базами данныхПроблема в том,что я должен вводить заказ (или что-то другое) и это записывалось...
Нужно получить экземпляр пользователя с помощью: