3v4l.org

run code in 300+ PHP versions simultaneously
<?php $input = [['color'=>'#000000','size'=>'L','count'=>2], ['color'=>'#000000','size'=>'XL','count'=>1], ['color'=>'#ffffff','size'=>'L','count'=>2], ['color'=>'#ffffff','size'=>'XL','count'=>1], ['color'=>'#ff0000','size'=>'L','count'=>1]]; $colors = []; foreach ($input as $product) { extract($product); $colors[$color][$size] = $count; } print_r($colors); $output = []; foreach ($colors as $color => $sizes) { $data = []; foreach ($sizes as $size => $count) { $data[] = ['value' => $size, 'count' => $count]; } $output[] = ['color' => $color, 'size' => $data]; } echo json_encode($output, JSON_PRETTY_PRINT);
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 77) Position 1 = 3, Position 2 = 11
Branch analysis from position: 3
2 jumps found. (Code = 78) Position 1 = 4, Position 2 = 11
Branch analysis from position: 4
1 jumps found. (Code = 42) Position 1 = 3
Branch analysis from position: 3
Branch analysis from position: 11
2 jumps found. (Code = 77) Position 1 = 17, Position 2 = 34
Branch analysis from position: 17
2 jumps found. (Code = 78) Position 1 = 18, Position 2 = 34
Branch analysis from position: 18
2 jumps found. (Code = 77) Position 1 = 21, Position 2 = 28
Branch analysis from position: 21
2 jumps found. (Code = 78) Position 1 = 22, Position 2 = 28
Branch analysis from position: 22
1 jumps found. (Code = 42) Position 1 = 21
Branch analysis from position: 21
Branch analysis from position: 28
1 jumps found. (Code = 42) Position 1 = 17
Branch analysis from position: 17
Branch analysis from position: 28
Branch analysis from position: 34
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 34
Branch analysis from position: 11
filename:       /in/ZTej1
function name:  (null)
number of ops:  41
compiled vars:  !0 = $input, !1 = $colors, !2 = $product, !3 = $color, !4 = $size, !5 = $count, !6 = $output, !7 = $sizes, !8 = $data
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    3     0  E >   ASSIGN                                                   !0, <array>
    9     1        ASSIGN                                                   !1, <array>
   11     2      > FE_RESET_R                                       $11     !0, ->11
          3    > > FE_FETCH_R                                               $11, !2, ->11
   12     4    >   INIT_FCALL                                               'extract'
          5        SEND_REF                                                 !2
          6        DO_ICALL                                                 
   13     7        FETCH_DIM_W                                      $13     !1, !3
          8        ASSIGN_DIM                                               $13, !4
          9        OP_DATA                                                  !5
   11    10      > JMP                                                      ->3
         11    >   FE_FREE                                                  $11
   16    12        INIT_FCALL                                               'print_r'
         13        SEND_VAR                                                 !1
         14        DO_ICALL                                                 
   18    15        ASSIGN                                                   !6, <array>
   20    16      > FE_RESET_R                                       $17     !1, ->34
         17    > > FE_FETCH_R                                       ~18     $17, !7, ->34
         18    >   ASSIGN                                                   !3, ~18
   21    19        ASSIGN                                                   !8, <array>
   22    20      > FE_RESET_R                                       $21     !7, ->28
         21    > > FE_FETCH_R                                       ~22     $21, !5, ->28
         22    >   ASSIGN                                                   !4, ~22
   23    23        INIT_ARRAY                                       ~25     !4, 'value'
   24    24        ADD_ARRAY_ELEMENT                                ~25     !5, 'count'
   23    25        ASSIGN_DIM                                               !8
   24    26        OP_DATA                                                  ~25
   22    27      > JMP                                                      ->21
         28    >   FE_FREE                                                  $21
   26    29        INIT_ARRAY                                       ~27     !3, 'color'
   27    30        ADD_ARRAY_ELEMENT                                ~27     !8, 'size'
   26    31        ASSIGN_DIM                                               !6
   27    32        OP_DATA                                                  ~27
   20    33      > JMP                                                      ->17
         34    >   FE_FREE                                                  $17
   30    35        INIT_FCALL                                               'json_encode'
         36        SEND_VAR                                                 !6
         37        SEND_VAL                                                 128
         38        DO_ICALL                                         $28     
         39        ECHO                                                     $28
         40      > RETURN                                                   1

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
137.53 ms | 1007 KiB | 16 Q