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', ), ); $temp = array_column($arr, "id"); $ids[0] = "NULL"; $ids = array_merge($ids, $temp); $temp = array_column($arr, "id_parent"); $parents[0] = "NULL"; $parents = array_merge($parents, $temp); Foreach(array_unique($parents) as $parent){ if($parent ==0) continue; $new[$parent]['parent'] = $arr[$parent]; $new[$parent]['children'] = array_intersect_key($arr, array_intersect($parents, [$parent])); } Var_dump($new);
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 77) Position 1 = 29, Position 2 = 50
Branch analysis from position: 29
2 jumps found. (Code = 78) Position 1 = 30, Position 2 = 50
Branch analysis from position: 30
2 jumps found. (Code = 43) Position 1 = 32, Position 2 = 33
Branch analysis from position: 32
1 jumps found. (Code = 42) Position 1 = 29
Branch analysis from position: 29
Branch analysis from position: 33
1 jumps found. (Code = 42) Position 1 = 29
Branch analysis from position: 29
Branch analysis from position: 50
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 50
filename:       /in/Fbet4
function name:  (null)
number of ops:  55
compiled vars:  !0 = $arr, !1 = $temp, !2 = $ids, !3 = $parents, !4 = $parent, !5 = $new
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    3     0  E >   ASSIGN                                                   !0, <array>
  237     1        INIT_FCALL                                               'array_column'
          2        SEND_VAR                                                 !0
          3        SEND_VAL                                                 'id'
          4        DO_ICALL                                         $7      
          5        ASSIGN                                                   !1, $7
  238     6        ASSIGN_DIM                                               !2, 0
          7        OP_DATA                                                  'NULL'
  239     8        INIT_FCALL                                               'array_merge'
          9        SEND_VAR                                                 !2
         10        SEND_VAR                                                 !1
         11        DO_ICALL                                         $10     
         12        ASSIGN                                                   !2, $10
  241    13        INIT_FCALL                                               'array_column'
         14        SEND_VAR                                                 !0
         15        SEND_VAL                                                 'id_parent'
         16        DO_ICALL                                         $12     
         17        ASSIGN                                                   !1, $12
  242    18        ASSIGN_DIM                                               !3, 0
         19        OP_DATA                                                  'NULL'
  243    20        INIT_FCALL                                               'array_merge'
         21        SEND_VAR                                                 !3
         22        SEND_VAR                                                 !1
         23        DO_ICALL                                         $15     
         24        ASSIGN                                                   !3, $15
  246    25        INIT_FCALL                                               'array_unique'
         26        SEND_VAR                                                 !3
         27        DO_ICALL                                         $17     
         28      > FE_RESET_R                                       $18     $17, ->50
         29    > > FE_FETCH_R                                               $18, !4, ->50
  247    30    >   IS_EQUAL                                                 !4, 0
         31      > JMPZ                                                     ~19, ->33
         32    > > JMP                                                      ->29
  248    33    >   FETCH_DIM_R                                      ~22     !0, !4
         34        FETCH_DIM_W                                      $20     !5, !4
         35        ASSIGN_DIM                                               $20, 'parent'
         36        OP_DATA                                                  ~22
  249    37        INIT_FCALL                                               'array_intersect_key'
         38        SEND_VAR                                                 !0
         39        INIT_FCALL                                               'array_intersect'
         40        SEND_VAR                                                 !3
         41        INIT_ARRAY                                       ~25     !4
         42        SEND_VAL                                                 ~25
         43        DO_ICALL                                         $26     
         44        SEND_VAR                                                 $26
         45        DO_ICALL                                         $27     
         46        FETCH_DIM_W                                      $23     !5, !4
         47        ASSIGN_DIM                                               $23, 'children'
         48        OP_DATA                                                  $27
  246    49      > JMP                                                      ->29
         50    >   FE_FREE                                                  $18
  251    51        INIT_FCALL                                               'var_dump'
         52        SEND_VAR                                                 !5
         53        DO_ICALL                                                 
         54      > RETURN                                                   1

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
174.34 ms | 1400 KiB | 25 Q