3v4l.org

run code in 300+ PHP versions simultaneously
<?php $arr = array ( 1 => array ( 'id' => '1', 'name' => ' Category', 'id_parent' => '0', 'ativo' => '1', ), 2 => array ( 'id' => '2', 'name' => ' Slippers', 'id_parent' => '0', 'ativo' => '1', ), 3 => array ( 'id' => '3', 'name' => ' TShirts', 'id_parent' => '0', 'ativo' => '1', ), 4 => array ( 'id' => '4', 'name' => ' BlousesSweatshirt', 'id_parent' => '0', 'ativo' => '1', ), 5 => array ( 'id' => '5', 'name' => ' Cap', 'id_parent' => '0', 'ativo' => '1', ), 6 => array ( 'id' => '6', 'name' => ' Stickers', 'id_parent' => '0', 'ativo' => '1', ), 7 => array ( 'id' => '7', 'name' => ' ScreensandFrames', 'id_parent' => '0', 'ativo' => '1', ), 8 => array ( 'id' => '8', 'name' => ' Models', 'id_parent' => '0', 'ativo' => '1', ), 9 => array ( 'id' => '9', 'name' => ' Notebook', 'id_parent' => '6', 'ativo' => '1', ), 10 => array ( 'id' => '10', 'name' => ' Door', 'id_parent' => '0', 'ativo' => '1', ), 11 => array ( 'id' => '11', 'name' => ' Door', 'id_parent' => '6', 'ativo' => '1', ), 12 => array ( 'id' => '12', 'name' => ' Kangaroo', 'id_parent' => '4', 'ativo' => '1', ), 13 => array ( 'id' => '13', 'name' => ' KangarooRaglan', 'id_parent' => '4', 'ativo' => '1', ), 14 => array ( 'id' => '14', 'name' => ' RoundCollar', 'id_parent' => '4', 'ativo' => '1', ), 15 => array ( 'id' => '15', 'name' => ' Trucker', 'id_parent' => '5', 'ativo' => '1', ), 16 => array ( 'id' => '16', 'name' => ' Basic', 'id_parent' => '3', 'ativo' => '1', ), 17 => array ( 'id' => '17', 'name' => ' Longline', 'id_parent' => '3', 'ativo' => '1', ), 18 => array ( 'id' => '18', 'name' => ' Raglan', 'id_parent' => '3', 'ativo' => '1', ), 19 => array ( 'id' => '19', 'name' => ' Raglan3/4', 'id_parent' => '3', 'ativo' => '1', ), 20 => array ( 'id' => '20', 'name' => ' Regatta', 'id_parent' => '3', 'ativo' => '1', ), 21 => array ( 'id' => '21', 'name' => ' Slide', 'id_parent' => '2', 'ativo' => '1', ), 22 => array ( 'id' => '22', 'name' => ' Stickers', 'id_parent' => '8', 'ativo' => '1', ), 23 => array ( 'id' => '23', 'name' => ' Notebook', 'id_parent' => '22', 'ativo' => '1', ), 24 => array ( 'id' => '24', 'name' => ' T-shirt', 'id_parent' => '8', 'ativo' => '1', ), 25 => array ( 'id' => '25', 'name' => ' Basic', 'id_parent' => '24', 'ativo' => '1', ), 26 => array ( 'id' => '26', 'name' => ' Slippers', 'id_parent' => '8', 'ativo' => '1', ), 27 => array ( 'id' => '27', 'name' => ' Slide', 'id_parent' => '26', 'ativo' => '1', ), 28 => array ( 'id' => '28', 'name' => ' 1Screen', 'id_parent' => '7', 'ativo' => '1', ), 29 => array ( 'id' => '29', 'name' => ' Set3Screens', 'id_parent' => '7', 'ativo' => '1', ), 30 => array ( 'id' => '30', 'name' => ' Set5Screens', 'id_parent' => '7', 'ativo' => '1', ), 31 => array ( 'id' => '31', 'name' => ' BlousesSweatshirt', 'id_parent' => '8', 'ativo' => '1', ), 32 => array ( 'id' => '32', 'name' => ' Cap', 'id_parent' => '8', 'ativo' => '1', ), 33 => array ( 'id' => '33', 'name' => ' ScreensandFrames', 'id_parent' => '8', 'ativo' => '1', ), ); $arr = array_merge([0 => ['id' => 0,'id_parent' => '0']], $arr); $new =[]; Foreach(array_reverse($arr) as $sub){ Echo $sub['id'] . "\n"; If(array_key_exists($sub['id_parent'], $new)){ $new[$sub['id_parent']][$sub['id']] = $sub; }Else{ $new[$sub['id_parent']] = $arr[$sub['id_parent']]; $new[$sub['id_parent']][$sub['id']] = $sub; } } //sort($new); Var_dump($new);

preferences:
42.03 ms | 402 KiB | 5 Q