tengo una matriz en PHP, que se ve así:Crear lista anidada de matriz multidimensional
array (
[0] => array (
[id] => 1
[title] => "Title 1"
[parent_id] => NULL
[depth] => 0
)
[1] => array (
[id] => 2
[title] => "Title 2"
[parent_id] => NULL
[depth] => 0
)
[2] => array (
[id] => 3
[title] => "Title 3"
[parent_id] => 2
[depth] => 1
)
[3] => array (
[id] => 4
[title] => "Title 4"
[parent_id] => 2
[depth] => 1
)
[4] => array (
[id] => 5
[title] => "Title 5"
[parent_id] => NULL
[depth] => 0
)
[5] => array (
[id] => 6
[title] => "Title 6"
[parent_id] => 4
[depth] => 2
)
)
Lo que quiero hacer es iterar sobre esta matriz y crear una lista anidada <ol>
de ella. Así, el resultado debe ser similar a esto:
<ol>
<li>Title 1</li> // id = 1
<li>Title 2</li> // id = 2
<ol>
<li>Title 3</li> // id = 3 -> parent_id = 2
<li>Title 4</li> // id = 4 -> parent_id = 2
<ol>
<li>Title 6</li> // id = 6 -> parent_id = 4
</ol>
</ol>
<li>Title 5</li> // id = 5
</ol>
que he estado tratando de pensar en una manera de cómo podría conseguir este hecho. Pero hasta ahora, todos los intentos han fallado ...
¿Alguien alguna idea de cómo puedo crear una lista anidada <ol>
de una matriz como esa?
Tenga en cuenta que no tengo ningún control sobre los datos proporcionados. Simplemente hago una llamada a una API y devuelve datos json, que convierto a una matriz. Y la matriz se ve exactamente como la que describí.
En la superficie parece simple, pero creo que todavía le falta información para obtener la mejor respuesta para su situación. Primero, ¿cómo obtuviste la matriz? ¿Es de una base de datos? ¿Sería posible almacenarlo de manera diferente o estás atrapado de esa manera? ¿La profundidad garantizada no es (ahora o en el futuro) de más de 1 o 2 o alguna vez planearás hacer una cantidad indeterminada de subniveles? ¿Con qué frecuencia se agregarán o eliminarán las categorías? Le sugiero que consulte http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/ ya que un modelo anidado puede ser más de lo que necesita. – Mike