3v4l.org

run code in 500+ PHP versions simultaneously
<?php $a = []; $a['b']['c']['d'] = 1; $a['b']['c']['d2'] = new stdclass(); $a['b']['c']['d3'] = []; var_dump(isset($a['b']['c']['d'])); // as expected, and within type var_dump(isset($a['b']['c']['f'])); // as expected, and within type var_dump(isset($a['b']['c']['d']['g'])); // as expected, because 'd' is 1 var_dump(isset($a['b']['c']['d']->g)); // as expected, because 'd' is 1 var_dump(isset($a['b']['c']['d3']->f)); // as expected, because 'd' is an array var_dump(isset($a['b']['c']['d3']['f'])); // as expected, because 'd' is an array var_dump(isset($a['b']['c']['d2']->f)); // as expected, because 'd' is an object var_dump(isset($a['b']['c']['d2']['f'])); // fatal error!! var_dump(isset($a['b']['c']['D']['g']->f)); // as expected, because 'D' is actually null var_dump(isset($a['b']['c']['D']['g']['f'])); // as expected, because 'D' is actually null // isset($a['b']['c']['d']) is set so following are true and within type var_dump(isset($a['b']['c'])); var_dump(isset($a['b'])); $i = 1; echo $i[3]; // error,
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/81sh5
function name:  (null)
number of ops:  98
compiled vars:  !0 = $a, !1 = $i
line      #* E I O op                               fetch          ext  return  operands
-----------------------------------------------------------------------------------------
    3     0  E >   ASSIGN                                                       !0, <array>
    4     1        FETCH_DIM_W                                          $3      !0, 'b'
          2        FETCH_DIM_W                                          $4      $3, 'c'
          3        ASSIGN_DIM                                                   $4, 'd'
          4        OP_DATA                                                      1
    5     5        NEW                                                  $9      'stdclass'
          6        DO_FCALL                                          0          
          7        FETCH_DIM_W                                          $6      !0, 'b'
          8        FETCH_DIM_W                                          $7      $6, 'c'
          9        ASSIGN_DIM                                                   $7, 'd2'
         10        OP_DATA                                                      $9
    6    11        FETCH_DIM_W                                          $11     !0, 'b'
         12        FETCH_DIM_W                                          $12     $11, 'c'
         13        ASSIGN_DIM                                                   $12, 'd3'
         14        OP_DATA                                                      <array>
    8    15        INIT_FCALL                                                   'var_dump'
         16        FETCH_DIM_IS                                         ~14     !0, 'b'
         17        FETCH_DIM_IS                                         ~15     ~14, 'c'
         18        ISSET_ISEMPTY_DIM_OBJ                             0  ~16     ~15, 'd'
         19        SEND_VAL                                                     ~16
         20        DO_ICALL                                                     
    9    21        INIT_FCALL                                                   'var_dump'
         22        FETCH_DIM_IS                                         ~18     !0, 'b'
         23        FETCH_DIM_IS                                         ~19     ~18, 'c'
         24        ISSET_ISEMPTY_DIM_OBJ                             0  ~20     ~19, 'f'
         25        SEND_VAL                                                     ~20
         26        DO_ICALL                                                     
   11    27        INIT_FCALL                                                   'var_dump'
         28        FETCH_DIM_IS                                         ~22     !0, 'b'
         29        FETCH_DIM_IS                                         ~23     ~22, 'c'
         30        FETCH_DIM_IS                                         ~24     ~23, 'd'
         31        ISSET_ISEMPTY_DIM_OBJ                             0  ~25     ~24, 'g'
         32        SEND_VAL                                                     ~25
         33        DO_ICALL                                                     
   12    34        INIT_FCALL                                                   'var_dump'
         35        FETCH_DIM_IS                                         ~27     !0, 'b'
         36        FETCH_DIM_IS                                         ~28     ~27, 'c'
         37        FETCH_DIM_IS                                         ~29     ~28, 'd'
         38        ISSET_ISEMPTY_PROP_OBJ                               ~30     ~29, 'g'
         39        SEND_VAL                                                     ~30
         40        DO_ICALL                                                     
   14    41        INIT_FCALL                                                   'var_dump'
         42        FETCH_DIM_IS                                         ~32     !0, 'b'
         43        FETCH_DIM_IS                                         ~33     ~32, 'c'
         44        FETCH_DIM_IS                                         ~34     ~33, 'd3'
         45        ISSET_ISEMPTY_PROP_OBJ                               ~35     ~34, 'f'
         46        SEND_VAL                                                     ~35
         47        DO_ICALL                                                     
   15    48        INIT_FCALL                                                   'var_dump'
         49        FETCH_DIM_IS                                         ~37     !0, 'b'
         50        FETCH_DIM_IS                                         ~38     ~37, 'c'
         51        FETCH_DIM_IS                                         ~39     ~38, 'd3'
         52        ISSET_ISEMPTY_DIM_OBJ                             0  ~40     ~39, 'f'
         53        SEND_VAL                                                     ~40
         54        DO_ICALL                                                     
   17    55        INIT_FCALL                                                   'var_dump'
         56        FETCH_DIM_IS                                         ~42     !0, 'b'
         57        FETCH_DIM_IS                                         ~43     ~42, 'c'
         58        FETCH_DIM_IS                                         ~44     ~43, 'd2'
         59        ISSET_ISEMPTY_PROP_OBJ                               ~45     ~44, 'f'
         60        SEND_VAL                                                     ~45
         61        DO_ICALL                                                     
   18    62        INIT_FCALL                                                   'var_dump'
         63        FETCH_DIM_IS                                         ~47     !0, 'b'
         64        FETCH_DIM_IS                                         ~48     ~47, 'c'
         65        FETCH_DIM_IS                                         ~49     ~48, 'd2'
         66        ISSET_ISEMPTY_DIM_OBJ                             0  ~50     ~49, 'f'
         67        SEND_VAL                                                     ~50
         68        DO_ICALL                                                     
   20    69        INIT_FCALL                                                   'var_dump'
         70        FETCH_DIM_IS                                         ~52     !0, 'b'
         71        FETCH_DIM_IS                                         ~53     ~52, 'c'
         72        FETCH_DIM_IS                                         ~54     ~53, 'D'
         73        FETCH_DIM_IS                                         ~55     ~54, 'g'
         74        ISSET_ISEMPTY_PROP_OBJ                               ~56     ~55, 'f'
         75        SEND_VAL                                                     ~56
         76        DO_ICALL                                                     
   21    77        INIT_FCALL                                                   'var_dump'
         78        FETCH_DIM_IS                                         ~58     !0, 'b'
         79        FETCH_DIM_IS                                         ~59     ~58, 'c'
         80        FETCH_DIM_IS                                         ~60     ~59, 'D'
         81        FETCH_DIM_IS                                         ~61     ~60, 'g'
         82        ISSET_ISEMPTY_DIM_OBJ                             0  ~62     ~61, 'f'
         83        SEND_VAL                                                     ~62
         84        DO_ICALL                                                     
   24    85        INIT_FCALL                                                   'var_dump'
         86        FETCH_DIM_IS                                         ~64     !0, 'b'
         87        ISSET_ISEMPTY_DIM_OBJ                             0  ~65     ~64, 'c'
         88        SEND_VAL                                                     ~65
         89        DO_ICALL                                                     
   25    90        INIT_FCALL                                                   'var_dump'
         91        ISSET_ISEMPTY_DIM_OBJ                             0  ~67     !0, 'b'
         92        SEND_VAL                                                     ~67
         93        DO_ICALL                                                     
   27    94        ASSIGN                                                       !1, 1
   28    95        FETCH_DIM_R                                          ~70     !1, 3
         96        ECHO                                                         ~70
         97      > RETURN                                                       1

Generated using Vulcan Logic Dumper, using php 8.5.0


preferences:
166.97 ms | 1502 KiB | 14 Q