3v4l.org

run code in 500+ PHP versions simultaneously
<?php $data = [ ['id' => 1, 'name' => 'イワーク', 'place' => '渓谷,洞窟', 'level' => 10, 'technique' => '岩雪崩'], ['id' => 1, 'name' => 'イワーク', 'place' => '砂漠,山頂', 'level' => 20, 'technique' => '岩石砲'], ['id' => 2, 'name' => 'ハガネール', 'place' => '鉱山,地中', 'level' => 10, 'technique' => 'メテオドライブ'], ['id' => 2, 'name' => 'ハガネール', 'place' => '丘陵,窪地', 'level' => 20, 'technique' => 'アイアンローラー'], ]; $result = []; foreach ($data as ['id' => $id, 'name' => $name, 'place' => $places, 'level' => $level, 'technique' => $technique]) { $result[$id] ??= compact('id', 'name'); $place_list = $result[$id]['place_list'] ?? []; $result[$id]['place_list'] = array_merge($place_list, explode(',', $places)); $result[$id]['lv_list'][$level] = compact('level', 'technique'); } var_dump($result);
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 77) Position 1 = 3, Position 2 = 50
Branch analysis from position: 3
2 jumps found. (Code = 78) Position 1 = 4, Position 2 = 50
Branch analysis from position: 4
1 jumps found. (Code = 42) Position 1 = 3
Branch analysis from position: 3
Branch analysis from position: 50
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 50
filename:       /in/pRcC8
function name:  (null)
number of ops:  55
compiled vars:  !0 = $data, !1 = $result, !2 = $id, !3 = $name, !4 = $places, !5 = $level, !6 = $technique, !7 = $place_list
line      #* E I O op                               fetch          ext  return  operands
-----------------------------------------------------------------------------------------
    3     0  E >   ASSIGN                                                       !0, <array>
   10     1        ASSIGN                                                       !1, <array>
   12     2      > FE_RESET_R                                           $10     !0, ->50
          3    > > FE_FETCH_R                                                   $10, $11, ->50
          4    >   FETCH_LIST_R                                         $12     $11, 'id'
          5        ASSIGN                                                       !2, $12
          6        FETCH_LIST_R                                         $14     $11, 'name'
          7        ASSIGN                                                       !3, $14
          8        FETCH_LIST_R                                         $16     $11, 'place'
          9        ASSIGN                                                       !4, $16
         10        FETCH_LIST_R                                         $18     $11, 'level'
         11        ASSIGN                                                       !5, $18
         12        FETCH_LIST_R                                         $20     $11, 'technique'
         13        ASSIGN                                                       !6, $20
         14        FREE                                                         $11
   13    15        FETCH_DIM_IS                                         ~22     !1, !2
         16        COALESCE                                             ~23     ~22
         17        INIT_FCALL                                                   'compact'
         18        SEND_VAL                                                     'id'
         19        SEND_VAL                                                     'name'
         20        DO_ICALL                                             $24     
         21        ASSIGN_DIM                                           ~25     !1, !2
         22        OP_DATA                                                      $24
         23        QM_ASSIGN                                            ~23     ~25
         24        FREE                                                         ~23
   14    25        FETCH_DIM_IS                                         ~26     !1, !2
         26        FETCH_DIM_IS                                         ~27     ~26, 'place_list'
         27        COALESCE                                             ~28     ~27
         28        QM_ASSIGN                                            ~28     <array>
         29        ASSIGN                                                       !7, ~28
   15    30        INIT_FCALL                                                   'array_merge'
         31        SEND_VAR                                                     !7
         32        INIT_FCALL                                                   'explode'
         33        SEND_VAL                                                     '%2C'
         34        SEND_VAR                                                     !4
         35        DO_ICALL                                             $32     
         36        SEND_VAR                                                     $32
         37        DO_ICALL                                             $33     
         38        FETCH_DIM_W                                          $30     !1, !2
         39        ASSIGN_DIM                                                   $30, 'place_list'
         40        OP_DATA                                                      $33
   16    41        INIT_FCALL                                                   'compact'
         42        SEND_VAL                                                     'level'
         43        SEND_VAL                                                     'technique'
         44        DO_ICALL                                             $37     
         45        FETCH_DIM_W                                          $34     !1, !2
         46        FETCH_DIM_W                                          $35     $34, 'lv_list'
         47        ASSIGN_DIM                                                   $35, !5
         48        OP_DATA                                                      $37
   12    49      > JMP                                                          ->3
         50    >   FE_FREE                                                      $10
   19    51        INIT_FCALL                                                   'var_dump'
         52        SEND_VAR                                                     !1
         53        DO_ICALL                                                     
         54      > RETURN                                                       1

Generated using Vulcan Logic Dumper, using php 8.5.0


preferences:
160.98 ms | 1569 KiB | 17 Q