Это на самом деле проблема, которую я уже решил, но я подозреваю, что может быть лучшее решение. У меня есть вложенный массив, который в основном представляет собой список всех узлов из категории дерева (в произвольном порядке):Манипулирование структурой многомерного массива
Array(
[0] => Array(
[Category] => Array(
[id] => 49
[name] => Poster
)
[Child] => Array()
)
[1] => Array(
[Category] => Array(
[id] => 48
[name] => Sticker
)
[Child] => Array()
)
[2] => Array(
[Category] => Array(
[id] => 46
[name] => Hat
)
[Child] => Array()
)
[3] => Array(
[Category] => Array(
[id] => 45
[name] => Hoodie
)
[Child] => Array()
)
)
Вы заметите, что $node['Child']
является пустым массивом во всех случаях. Это связано с тем, что я уже использовал array_filter()
для фильтрации всех нелистовых узлов. Тем не менее, то, что я в конечном счете хочу иметь один одномерный массив из листовых узлов, как это:
Array(
[49] => Poster
[48] => Sticker
[46] => Hat
[45] => Hoodie
)
Так что будет наиболее элегантным способом преобразования первого массива на второй массив?
Возможно, вы также можете начать с массива как листовых узлов, так и не-листовых узлов, и попытайтесь как отрезать массив, так и перестроить его. Пример не-листовой узел будет что-то вроде:
[7] => Array(
[Category] => Array(
[id] => 36
[name] => Merch
)
[Child] => Array(
[0] => Array(
[id] => 49
[name] => Poster
)
[1] => Array(
[id] => 48
[name] => Sticker
)
[2] => Array(
[id] => 40
[name] => Apparel
)
)
)
Наконец, я использую CakePHP, поэтому использование Set
класса CakePHP является также приемлемым.
Имеет ли этот контент, случайно возникший как XML? –
Нет, это только структура данных, которую CakePHP предоставляет для запросов к базе данных. – Calvin