3v4l.org

run code in 300+ PHP versions simultaneously
<?php $string = '&client_sku=item1&service[0][name]=Relay&service[0][service_type]=RS&service[0][tier][0][from]=1&service[0][tier][0][to]=10&service[0][tier][1][from]=11'; parse_str($string, $output); $rowObjectExample = ''; foreach($output as $name => $value) { if(isset($output[$name])) { if(is_array($value)) { $i = 0; $length = count($value); foreach($value as $key=>$val) { $i++; $rowObjectExample .= $name.'_row '.$name.'Row'; if($length > 1) { $rowObjectExample .= ($i <= $length ? $key : ''); } $rowObjectExample .= ' = new '.$name.'_row()'.";\n\t"; if(is_array($val)) { foreach($val as $k=>$v) { if(is_array($v)) { $n = 0; $len = count($v); foreach ($v as $row=>$column) { if(is_array($column)) { foreach($column as $r=>$c) { $rowObjectExample .= $k.'_row '.$k.'Row'; $n++; if($len > 1) { $rowObjectExample .= ($n <= $len ? $row : ''); } $rowObjectExample .= '.'.$r.' = '.$c."\n\t"; } } } } else { $rowObjectExample .= $name.'Row'; if($length > 1) { $rowObjectExample .= ($i <= $length ? $key : ''); } $rowObjectExample .= '.'.$k.' = '.$v."\n\t"; } } } } } } } var_dump($rowObjectExample);
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 77) Position 1 = 7, Position 2 = 97
Branch analysis from position: 7
2 jumps found. (Code = 78) Position 1 = 8, Position 2 = 97
Branch analysis from position: 8
2 jumps found. (Code = 43) Position 1 = 11, Position 2 = 96
Branch analysis from position: 11
2 jumps found. (Code = 43) Position 1 = 13, Position 2 = 96
Branch analysis from position: 13
2 jumps found. (Code = 77) Position 1 = 17, Position 2 = 95
Branch analysis from position: 17
2 jumps found. (Code = 78) Position 1 = 18, Position 2 = 95
Branch analysis from position: 18
2 jumps found. (Code = 43) Position 1 = 26, Position 2 = 32
Branch analysis from position: 26
2 jumps found. (Code = 43) Position 1 = 28, Position 2 = 30
Branch analysis from position: 28
1 jumps found. (Code = 42) Position 1 = 31
Branch analysis from position: 31
2 jumps found. (Code = 43) Position 1 = 38, Position 2 = 94
Branch analysis from position: 38
2 jumps found. (Code = 77) Position 1 = 39, Position 2 = 93
Branch analysis from position: 39
2 jumps found. (Code = 78) Position 1 = 40, Position 2 = 93
Branch analysis from position: 40
2 jumps found. (Code = 43) Position 1 = 43, Position 2 = 77
Branch analysis from position: 43
2 jumps found. (Code = 77) Position 1 = 47, Position 2 = 75
Branch analysis from position: 47
2 jumps found. (Code = 78) Position 1 = 48, Position 2 = 75
Branch analysis from position: 48
2 jumps found. (Code = 43) Position 1 = 51, Position 2 = 74
Branch analysis from position: 51
2 jumps found. (Code = 77) Position 1 = 52, Position 2 = 73
Branch analysis from position: 52
2 jumps found. (Code = 78) Position 1 = 53, Position 2 = 73
Branch analysis from position: 53
2 jumps found. (Code = 43) Position 1 = 61, Position 2 = 67
Branch analysis from position: 61
2 jumps found. (Code = 43) Position 1 = 63, Position 2 = 65
Branch analysis from position: 63
1 jumps found. (Code = 42) Position 1 = 66
Branch analysis from position: 66
1 jumps found. (Code = 42) Position 1 = 52
Branch analysis from position: 52
Branch analysis from position: 65
1 jumps found. (Code = 42) Position 1 = 52
Branch analysis from position: 52
Branch analysis from position: 67
Branch analysis from position: 73
1 jumps found. (Code = 42) Position 1 = 47
Branch analysis from position: 47
Branch analysis from position: 73
Branch analysis from position: 74
Branch analysis from position: 75
1 jumps found. (Code = 42) Position 1 = 92
Branch analysis from position: 92
1 jumps found. (Code = 42) Position 1 = 39
Branch analysis from position: 39
Branch analysis from position: 75
Branch analysis from position: 77
2 jumps found. (Code = 43) Position 1 = 81, Position 2 = 87
Branch analysis from position: 81
2 jumps found. (Code = 43) Position 1 = 83, Position 2 = 85
Branch analysis from position: 83
1 jumps found. (Code = 42) Position 1 = 86
Branch analysis from position: 86
1 jumps found. (Code = 42) Position 1 = 39
Branch analysis from position: 39
Branch analysis from position: 85
1 jumps found. (Code = 42) Position 1 = 39
Branch analysis from position: 39
Branch analysis from position: 87
Branch analysis from position: 93
1 jumps found. (Code = 42) Position 1 = 17
Branch analysis from position: 17
Branch analysis from position: 93
Branch analysis from position: 94
Branch analysis from position: 30
2 jumps found. (Code = 43) Position 1 = 38, Position 2 = 94
Branch analysis from position: 38
Branch analysis from position: 94
Branch analysis from position: 32
Branch analysis from position: 95
1 jumps found. (Code = 42) Position 1 = 7
Branch analysis from position: 7
Branch analysis from position: 95
Branch analysis from position: 96
Branch analysis from position: 96
Branch analysis from position: 97
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 97
filename:       /in/k0Mbs
function name:  (null)
number of ops:  102
compiled vars:  !0 = $string, !1 = $output, !2 = $rowObjectExample, !3 = $value, !4 = $name, !5 = $i, !6 = $length, !7 = $val, !8 = $key, !9 = $v, !10 = $k, !11 = $n, !12 = $len, !13 = $column, !14 = $row, !15 = $c, !16 = $r
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    2     0  E >   ASSIGN                                                   !0, '%26client_sku%3Ditem1%26service%5B0%5D%5Bname%5D%3DRelay%26service%5B0%5D%5Bservice_type%5D%3DRS%26service%5B0%5D%5Btier%5D%5B0%5D%5Bfrom%5D%3D1%26service%5B0%5D%5Btier%5D%5B0%5D%5Bto%5D%3D10%26service%5B0%5D%5Btier%5D%5B1%5D%5Bfrom%5D%3D11'
    4     1        INIT_FCALL                                               'parse_str'
          2        SEND_VAR                                                 !0
          3        SEND_REF                                                 !1
          4        DO_ICALL                                                 
    5     5        ASSIGN                                                   !2, ''
    6     6      > FE_RESET_R                                       $20     !1, ->97
          7    > > FE_FETCH_R                                       ~21     $20, !3, ->97
          8    >   ASSIGN                                                   !4, ~21
    7     9        ISSET_ISEMPTY_DIM_OBJ                         0          !1, !4
         10      > JMPZ                                                     ~23, ->96
    8    11    >   TYPE_CHECK                                  128          !3
         12      > JMPZ                                                     ~24, ->96
    9    13    >   ASSIGN                                                   !5, 0
   10    14        COUNT                                            ~26     !3
         15        ASSIGN                                                   !6, ~26
   11    16      > FE_RESET_R                                       $28     !3, ->95
         17    > > FE_FETCH_R                                       ~29     $28, !7, ->95
         18    >   ASSIGN                                                   !8, ~29
   12    19        PRE_INC                                                  !5
   13    20        CONCAT                                           ~32     !4, '_row+'
         21        CONCAT                                           ~33     ~32, !4
         22        CONCAT                                           ~34     ~33, 'Row'
         23        ASSIGN_OP                                     8          !2, ~34
   14    24        IS_SMALLER                                               1, !6
         25      > JMPZ                                                     ~36, ->32
   15    26    >   IS_SMALLER_OR_EQUAL                                      !5, !6
         27      > JMPZ                                                     ~37, ->30
         28    >   QM_ASSIGN                                        ~38     !8
         29      > JMP                                                      ->31
         30    >   QM_ASSIGN                                        ~38     ''
         31    >   ASSIGN_OP                                     8          !2, ~38
   17    32    >   CONCAT                                           ~40     '+%3D+new+', !4
         33        CONCAT                                           ~41     ~40, '_row%28%29'
         34        CONCAT                                           ~42     ~41, '%3B%0A%09'
         35        ASSIGN_OP                                     8          !2, ~42
   18    36        TYPE_CHECK                                  128          !7
         37      > JMPZ                                                     ~44, ->94
   19    38    > > FE_RESET_R                                       $45     !7, ->93
         39    > > FE_FETCH_R                                       ~46     $45, !9, ->93
         40    >   ASSIGN                                                   !10, ~46
   20    41        TYPE_CHECK                                  128          !9
         42      > JMPZ                                                     ~48, ->77
   21    43    >   ASSIGN                                                   !11, 0
   22    44        COUNT                                            ~50     !9
         45        ASSIGN                                                   !12, ~50
   23    46      > FE_RESET_R                                       $52     !9, ->75
         47    > > FE_FETCH_R                                       ~53     $52, !13, ->75
         48    >   ASSIGN                                                   !14, ~53
   24    49        TYPE_CHECK                                  128          !13
         50      > JMPZ                                                     ~55, ->74
   25    51    > > FE_RESET_R                                       $56     !13, ->73
         52    > > FE_FETCH_R                                       ~57     $56, !15, ->73
         53    >   ASSIGN                                                   !16, ~57
   26    54        CONCAT                                           ~59     !10, '_row+'
         55        CONCAT                                           ~60     ~59, !10
         56        CONCAT                                           ~61     ~60, 'Row'
         57        ASSIGN_OP                                     8          !2, ~61
   27    58        PRE_INC                                                  !11
   28    59        IS_SMALLER                                               1, !12
         60      > JMPZ                                                     ~64, ->67
   29    61    >   IS_SMALLER_OR_EQUAL                                      !11, !12
         62      > JMPZ                                                     ~65, ->65
         63    >   QM_ASSIGN                                        ~66     !14
         64      > JMP                                                      ->66
         65    >   QM_ASSIGN                                        ~66     ''
         66    >   ASSIGN_OP                                     8          !2, ~66
   31    67    >   CONCAT                                           ~68     '.', !16
         68        CONCAT                                           ~69     ~68, '+%3D+'
         69        CONCAT                                           ~70     ~69, !15
         70        CONCAT                                           ~71     ~70, '%0A%09'
         71        ASSIGN_OP                                     8          !2, ~71
   25    72      > JMP                                                      ->52
         73    >   FE_FREE                                                  $56
   23    74    > > JMP                                                      ->47
         75    >   FE_FREE                                                  $52
         76      > JMP                                                      ->92
   36    77    >   CONCAT                                           ~73     !4, 'Row'
         78        ASSIGN_OP                                     8          !2, ~73
   37    79        IS_SMALLER                                               1, !6
         80      > JMPZ                                                     ~75, ->87
   38    81    >   IS_SMALLER_OR_EQUAL                                      !5, !6
         82      > JMPZ                                                     ~76, ->85
         83    >   QM_ASSIGN                                        ~77     !8
         84      > JMP                                                      ->86
         85    >   QM_ASSIGN                                        ~77     ''
         86    >   ASSIGN_OP                                     8          !2, ~77
   40    87    >   CONCAT                                           ~79     '.', !10
         88        CONCAT                                           ~80     ~79, '+%3D+'
         89        CONCAT                                           ~81     ~80, !9
         90        CONCAT                                           ~82     ~81, '%0A%09'
         91        ASSIGN_OP                                     8          !2, ~82
   19    92    > > JMP                                                      ->39
         93    >   FE_FREE                                                  $45
   11    94    > > JMP                                                      ->17
         95    >   FE_FREE                                                  $28
    6    96    > > JMP                                                      ->7
         97    >   FE_FREE                                                  $20
   49    98        INIT_FCALL                                               'var_dump'
         99        SEND_VAR                                                 !2
        100        DO_ICALL                                                 
        101      > RETURN                                                   1

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
164.48 ms | 1400 KiB | 17 Q