3v4l.org

run code in 500+ PHP versions simultaneously
<?php $s = new \WeakMap(); $a = new \stdClass(); $b = new \stdClass(); $s[$a] ??= []; $v = &$s[$a]; $v[1] = ['foo' => 'bar']; var_dump($v); var_dump($s[$a]); $d = &$s[$a][1]; $d['bar'] = 'baz'; var_dump($d); var_dump($s[$a]); $s[$b] ??= []; $s[$b][2] = 2; var_dump($s[$b]); var_dump($s); unset($a); var_dump($s);
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/tq5nj
function name:  (null)
number of ops:  59
compiled vars:  !0 = $s, !1 = $a, !2 = $b, !3 = $v, !4 = $d
line      #* E I O op                               fetch          ext  return  operands
-----------------------------------------------------------------------------------------
    3     0  E >   NEW                                                  $5      'WeakMap'
          1        DO_FCALL                                          0          
          2        ASSIGN                                                       !0, $5
    4     3        NEW                                                  $8      'stdClass'
          4        DO_FCALL                                          0          
          5        ASSIGN                                                       !1, $8
    5     6        NEW                                                  $11     'stdClass'
          7        DO_FCALL                                          0          
          8        ASSIGN                                                       !2, $11
    7     9        FETCH_DIM_IS                                         ~14     !0, !1
         10        COALESCE                                             ~15     ~14
         11        ASSIGN_DIM                                           ~16     !0, !1
         12        OP_DATA                                                      <array>
         13        QM_ASSIGN                                            ~15     ~16
         14        FREE                                                         ~15
    8    15        FETCH_DIM_W                                          $17     !0, !1
         16        ASSIGN_REF                                                   !3, $17
    9    17        ASSIGN_DIM                                                   !3, 1
         18        OP_DATA                                                      <array>
   11    19        INIT_FCALL                                                   'var_dump'
         20        SEND_VAR                                                     !3
         21        DO_ICALL                                                     
   12    22        INIT_FCALL                                                   'var_dump'
         23        FETCH_DIM_R                                          ~21     !0, !1
         24        SEND_VAL                                                     ~21
         25        DO_ICALL                                                     
   14    26        FETCH_DIM_W                                          $23     !0, !1
         27        FETCH_DIM_W                                          $24     $23, 1
         28        ASSIGN_REF                                                   !4, $24
   15    29        ASSIGN_DIM                                                   !4, 'bar'
         30        OP_DATA                                                      'baz'
   17    31        INIT_FCALL                                                   'var_dump'
         32        SEND_VAR                                                     !4
         33        DO_ICALL                                                     
   18    34        INIT_FCALL                                                   'var_dump'
         35        FETCH_DIM_R                                          ~28     !0, !1
         36        SEND_VAL                                                     ~28
         37        DO_ICALL                                                     
   20    38        FETCH_DIM_IS                                         ~30     !0, !2
         39        COALESCE                                             ~31     ~30
         40        ASSIGN_DIM                                           ~32     !0, !2
         41        OP_DATA                                                      <array>
         42        QM_ASSIGN                                            ~31     ~32
         43        FREE                                                         ~31
   21    44        FETCH_DIM_W                                          $33     !0, !2
         45        ASSIGN_DIM                                                   $33, 2
         46        OP_DATA                                                      2
   23    47        INIT_FCALL                                                   'var_dump'
         48        FETCH_DIM_R                                          ~35     !0, !2
         49        SEND_VAL                                                     ~35
         50        DO_ICALL                                                     
   24    51        INIT_FCALL                                                   'var_dump'
         52        SEND_VAR                                                     !0
         53        DO_ICALL                                                     
   26    54        UNSET_CV                                                     !1
   28    55        INIT_FCALL                                                   'var_dump'
         56        SEND_VAR                                                     !0
         57        DO_ICALL                                                     
         58      > RETURN                                                       1

Generated using Vulcan Logic Dumper, using php 8.5.0


preferences:
152.71 ms | 990 KiB | 9 Q