Я работал над пересмотром иерархического поиска, и теперь мне приходится преодолеть более 3 уровней. Проблема заключается в том, что мне приходится конвертировать единый уровень массива в многоуровневое. Я попытался использовать array_search + array_column вместе, но мой массив не учитывается численно. Мне нужно добавить детей к их родителям, соответствующим их от их родительского массива. Я поделюсь структурами и ожидаемым результатом.$menu = array (
207705 =>
array (
'ID' => 207705,
'title' => 'Home',
'url' => 'https://example.com/',
'description' => '',
'children' =>
array (
),
),
207795 =>
array (
'ID' => 207795,
'title' => 'Category',
'url' => 'https://example.com/cat/',
'description' => 'Lorem ipsum',
'children' =>
array (
207892 =>
array (
'ID' => 207892,
'title' => 'Subcategory0',
'url' => 'https://example.com/cat/subcat0/',
'description' => '',
),
207791 =>
array (
'ID' => 207791,
'title' => 'Subcategory1',
'url' => 'https://example.com/cat/subcat1/',
'description' => '',
),
),
),
)
< /code>
Вот массив детей, которые мне нужно слиться в основное в соответствии с соответствующим идентификатором: < /p>
$children = array (
207892 =>
array (
0 =>
array (
'ID' => 207789,
'title' => 'SubSubCat1',
'url' => 'https://example.com/cat/subcat0/sub1',
),
1 =>
array (
'ID' => 207786,
'title' => 'SubSubCat2',
'url' => 'https://example.com/cat/subcat0/sub2',
),
2 =>
array (
'ID' => 207788,
'title' => 'SubSubCat3',
'url' => 'https://example.com/cat/subcat0/sub3',
),
3 =>
array (
'ID' => 207787,
'title' => 'SubSubCat4',
'url' => 'https://example.com/cat/subcat0/sub4',
),
),
)
< /code>
Окончательный результат, который я хочу: < /p>
array (
207705 =>
array (
'ID' => 207705,
'title' => 'Home',
'url' => 'https://example.com/',
'description' => '',
'children' =>
array (
),
),
207795 =>
array (
'ID' => 207795,
'title' => 'Category',
'url' => 'https://example.com/cat/',
'description' => 'Lorem ipsum',
'children' =>
array (
207892 =>
array (
'ID' => 207892,
'title' => 'Subcategory0',
'url' => 'https://example.com/cat/subcat0/',
'description' => '',
'children' => array (
0 =>
array (
'ID' => 207789,
'title' => 'SubSubCat1',
'url' => 'https://example.com/cat/subcat0/sub1',
),
1 =>
array (
'ID' => 207786,
'title' => 'SubSubCat2',
'url' => 'https://example.com/cat/subcat0/sub2',
),
2 =>
array (
'ID' => 207788,
'title' => 'SubSubCat3',
'url' => 'https://example.com/cat/subcat0/sub3',
),
3 =>
array (
'ID' => 207787,
'title' => 'SubSubCat4',
'url' => 'https://example.com/cat/subcat0/sub4',
),
),
),
207791 =>
array (
'ID' => 207791,
'title' => 'Subcategory1',
'url' => 'https://example.com/cat/subcat1/',
'description' => '',
),
),
),
)
< /code>
До сих пор я пробовал много решений из этого потока. Все либо возвращает ложь, нулевой, либо только первый уровень клавиш массива.
Есть ли функция или даже один линий, который я могу использовать? < /P>
Мой текущий код-это это : < /p>
foreach($children as $id => $item) {
$parent = array_search($id, $menu);
if($show == true) {
//In this case looking to add the current item array to the ['children'] of the found matching element in the $menu array
$search = array_map(function($v){return $v['ID'];},$menu);
$menu[$search] = $item;
}
}
Подробнее здесь: https://stackoverflow.com/questions/794 ... onal-array
PHP поиск и вставка сопоставления с термином в многомерном массиве ⇐ Php
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение