Dada la siguiente matriz:
array( 0 => array( 0 => 56, 1 => array( 0 => 57, 1 => 58, 2 => 59, ), 2 => 60 ), 1 => array( 0 => 61, 1 => array( 0 => 62, 1 => array( 0 => 63, 1 => 64 ) ) ) )¿Cómo podría proceder a eliminar elementos de esa matriz a partir de los elementos más profundos? Mis elementos son ID en una base de datos y las restricciones clave me impiden eliminar padres si tienen hijos...
Busqué algo usando RecursiveIterator pero no hay solución hasta ahora...
En realidad, no es necesario obtener un algoritmo específico, una recursión estándar hará el trabajo
Puede visitar las hojas solo con el modo RecursiveIteratorIterator y RecursiveIteratorIterator::LEAVES_ONLY y luego invertir la matriz resultante:
$iterator = new RecursiveIteratorIterator( new RecursiveArrayIterator($ids), RecursiveIteratorIterator::LEAVES_ONLY ); $ids = []; foreach ($iterator as $id) { // You can put elements directly in the beggining of an array // or reverse array later. // array_unshift($ids, $id); $ids[] = $id; } $ids = array_reverse($ids);Aquí está la demostración de trabajo .