есть массив:
array(3) {
[0]=>
array(4) {
["id"]=>
int(1)
["name"]=>
string(24) "Пользователи"
["alias"]=>
string(5) "users"
["childrens"]=>
array(3) {
[0]=>
array(3) {
["id"]=>
int(2)
["name"]=>
string(16) "Создание"
["alias"]=>
string(6) "create"
}
[1]=>
array(4) {
["id"]=>
int(3)
["name"]=>
string(12) "Список"
["alias"]=>
string(4) "list"
["childrens"]=>
array(2) {
[0]=>
array(3) {
["id"]=>
int(4)
["name"]=>
string(16) "Активные"
["alias"]=>
string(6) "active"
}
[1]=>
array(3) {
["id"]=>
int(5)
["name"]=>
string(18) "Удаленные"
["alias"]=>
string(7) "deleted"
}
}
}
[2]=>
array(3) {
["id"]=>
int(8)
["name"]=>
string(10) "Поиск"
["alias"]=>
string(6) "search"
}
}
}
[1]=>
array(4) {
["id"]=>
int(6)
["name"]=>
string(12) "Заявки"
["alias"]=>
string(8) "requests"
["childrens"]=>
array(3) {
[0]=>
array(3) {
["id"]=>
int(9)
["name"]=>
string(38) "Заявки на поключение"
["alias"]=>
string(10) "connecting"
}
[1]=>
array(3) {
["id"]=>
int(10)
["name"]=>
string(30) "Заявки на ремонт"
["alias"]=>
string(7) "repairs"
}
[2]=>
array(3) {
["id"]=>
int(11)
["name"]=>
string(28) "Заявки на обход"
["alias"]=>
string(5) "round"
}
}
}
[2]=>
array(4) {
["id"]=>
int(7)
["name"]=>
string(12) "Отчёты"
["alias"]=>
string(7) "reports"
["childrens"]=>
array(2) {
[0]=>
array(4) {
["id"]=>
int(12)
["name"]=>
string(31) "Отдел маркетинга"
["alias"]=>
string(9) "marketing"
["childrens"]=>
array(3) {
[0]=>
array(3) {
["id"]=>
int(15)
["name"]=>
string(34) "Отчёт по списаниям"
["alias"]=>
string(10) "write-offs"
}
[1]=>
array(3) {
["id"]=>
int(16)
["name"]=>
string(32) "Отчёт по расходам"
["alias"]=>
string(5) "costs"
}
[2]=>
array(3) {
["id"]=>
int(17)
["name"]=>
string(25) "Годовой отчёт"
["alias"]=>
string(4) "year"
}
}
}
[1]=>
array(4) {
["id"]=>
int(14)
["name"]=>
string(20) "Управление"
["alias"]=>
string(7) "control"
[0]=>
array(2) {
[0]=>
array(3) {
["id"]=>
int(18)
["name"]=>
string(55) "Отчёт по эффективности работы"
["alias"]=>
string(10) "efficiency"
}
[1]=>
array(3) {
["id"]=>
int(19)
["name"]=>
string(40) "Отчёт по подключениям"
["alias"]=>
string(10) "connecting"
}
}
}
}
}
}
Нужно из него сделать одномерный массив и присвоить категориям parent_id, пробовал сделать так
<?php
function flatten($arr, $parentId = null)
{
$ret = [];
foreach ($arr as $item) {
if (array_key_exists('childrens', $item)) {
$item['parent_id'] = $parentId;
$ret[] = $item;
$ret = array_merge($ret, flatten($item['childrens'], $item['id']));
}
else{
$item['parent_id'] = $parentId;
$ret[] = $item;
$ret = array_merge($ret, flatten($item['id'], $item['id']));
}
}
return $ret;
}
Но не понятно какую функцию применить что бы извлечить из массива уровнем выше id
В примере показана только суть ответа. Думаю, подстроите код под свои нужды
function flatten($arr, $parentId = null)
{
$ret = [];
foreach ($arr as $item) {
$item['parent_id'] = $parentId;
$ret[] = $item;
$ret = array_merge($ret, flatten($item['childrens'], $item['id']));
}
return $ret;
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Скажите пожалуйста, в чем тут ошибка, мне нужна проверка по 2 полях для цены, но в таком варианте как на скрине не работает, страница не загружается,...
Хочу что бы отправляло текущую форму по клику на кнопку, в формах одинаковый классform и кнопки