sql >> Base de Datos >  >> RDS >> Mysql

Cómo convertir una tabla DB con una relación padre-hijo en una matriz multidimensional

Aquí está mi solución para ello:

function cost_centres_format($items,$parent_id,$array=array()) {
    foreach($items as $item) {
        if($item->parent_id == $parent_id) {
            $array[] = $item;
            if($item->internal_purchase_order_cost_centre_id>0) {
                $array = cost_centres_format($items,$item->internal_purchase_order_cost_centre_id,$array);
            }
        }
    }
    return $array;
}
$array = cost_centres_format($items,0);

Diésel (id:5) estará por debajo de Mantenimiento del vehículo (id:4) debido a su pedido original. Puede realizar una ordenación adicional por nombre, pero en su ejemplo, Capital (id:3) estaba por debajo de Overheads (id:2).