Anonymous
Как переформатировать вложенный массив?
Сообщение
Anonymous » 29 янв 2025, 10:23
У меня есть сохраненный
Unlimited < /strong> вложенные уровни, массив с нежелательными дополнительными данными. < /p>
Код: Выделить всё
$arr = array(
array(
'name' => 'item1',
'level' => 0,
'extra_key' => 'some_data',
'children' => array(
'name' => 'sub-item1',
'level' => 1,
'extra_key' => 'some_data',
'children' => array(
'name' => 'sub-sub-item1',
'level' => 2,
'extra_key' => 'some_data',
'children' => array()
),
array(
'name' => 'sub-sub2-item1',
'level' => 2,
'extra_key' => 'some_data',
'children' => array()
),
)
),
array(
'name' => 'item2',
'level' => 0,
'extra_key' => 'some_data',
'children' => array(
'name' => 'sub-item2',
'level' => 2,
'extra_key' => 'some_data',
'children' => array(
'name' => 'sub-sub-item2',
'level' => 2,
'extra_key' => 'some_data',
'children' => array()
),
array(
'name' => 'sub-sub2-item2',
'level' => 2,
'extra_key' => 'some_data',
'children' => array()
),
)
),
array(
'name' => 'item3',
'level' => 0,
'extra_key' => 'some_data',
'children' => array(
'name' => 'sub-item3',
'level' => 1,
'extra_key' => 'some_data',
'children' => array(
'name' => 'sub-sub-item3',
'level' => 2,
'extra_key' => 'some_data',
'children' => array()
),
array(
'name' => 'sub-sub2-item3',
'level' => 2,
'extra_key' => 'some_data',
'children' => array()
),
)
),
);
< /code>
Ожидаемый выводный массив: < /p>
$arr = array(
array(
'name' => 'item1',
'nodes' => array(
'name' => 'sub-item1',
'nodes' => array(
'name' => 'sub-sub-item1',
'nodes' => array()
),
array(
'name' => 'sub-sub2-item1',
'nodes' => array()
),
)
),
array(
'name' => 'item2',
'nodes' => array(
'name' => 'sub-item2',
'nodes' => array(
'name' => 'sub-sub-item2',
'nodes' => array()
),
array(
'name' => 'sub-sub2-item2',
'nodes' => array()
),
)
),
array(
'name' => 'item3',
'nodes' => array(
'name' => 'sub-item3',
'nodes' => array(
'name' => 'sub-sub-item3',
'nodes' => array()
),
array(
'name' => 'sub-sub2-item3',
'nodes' => array()
),
)
)
);
Я хочу удалить нежелательные ключи, такие как уровень , extra_key с всех уровней, и я также хочу изменить имя ключевых детей узлы затем воспроизводите один и тот же массив с помощью той же структуры [/b] с новым форматом.
Как я могу это достичь? < /p>
Я попытался сделать это рекурсивной функцией, но я не смог воспроизвести ту же структуру < /p>
Подробнее здесь:
https://stackoverflow.com/questions/413 ... sted-array
1738135408
Anonymous
У меня есть сохраненный [b] Unlimited < /strong> вложенные уровни, массив с нежелательными дополнительными данными. < /p> [code]$arr = array( array( 'name' => 'item1', 'level' => 0, 'extra_key' => 'some_data', 'children' => array( 'name' => 'sub-item1', 'level' => 1, 'extra_key' => 'some_data', 'children' => array( 'name' => 'sub-sub-item1', 'level' => 2, 'extra_key' => 'some_data', 'children' => array() ), array( 'name' => 'sub-sub2-item1', 'level' => 2, 'extra_key' => 'some_data', 'children' => array() ), ) ), array( 'name' => 'item2', 'level' => 0, 'extra_key' => 'some_data', 'children' => array( 'name' => 'sub-item2', 'level' => 2, 'extra_key' => 'some_data', 'children' => array( 'name' => 'sub-sub-item2', 'level' => 2, 'extra_key' => 'some_data', 'children' => array() ), array( 'name' => 'sub-sub2-item2', 'level' => 2, 'extra_key' => 'some_data', 'children' => array() ), ) ), array( 'name' => 'item3', 'level' => 0, 'extra_key' => 'some_data', 'children' => array( 'name' => 'sub-item3', 'level' => 1, 'extra_key' => 'some_data', 'children' => array( 'name' => 'sub-sub-item3', 'level' => 2, 'extra_key' => 'some_data', 'children' => array() ), array( 'name' => 'sub-sub2-item3', 'level' => 2, 'extra_key' => 'some_data', 'children' => array() ), ) ), ); < /code> Ожидаемый выводный массив: < /p> $arr = array( array( 'name' => 'item1', 'nodes' => array( 'name' => 'sub-item1', 'nodes' => array( 'name' => 'sub-sub-item1', 'nodes' => array() ), array( 'name' => 'sub-sub2-item1', 'nodes' => array() ), ) ), array( 'name' => 'item2', 'nodes' => array( 'name' => 'sub-item2', 'nodes' => array( 'name' => 'sub-sub-item2', 'nodes' => array() ), array( 'name' => 'sub-sub2-item2', 'nodes' => array() ), ) ), array( 'name' => 'item3', 'nodes' => array( 'name' => 'sub-item3', 'nodes' => array( 'name' => 'sub-sub-item3', 'nodes' => array() ), array( 'name' => 'sub-sub2-item3', 'nodes' => array() ), ) ) ); [/code] Я хочу удалить нежелательные ключи, такие как уровень , extra_key с всех уровней, и я также хочу изменить имя ключевых детей узлы затем воспроизводите один и тот же массив с помощью той же структуры [/b] с новым форматом. Как я могу это достичь? < /p> Я попытался сделать это рекурсивной функцией, но я не смог воспроизвести ту же структуру < /p> Подробнее здесь: [url]https://stackoverflow.com/questions/41363985/how-to-reformat-a-nested-array[/url]