3v4l.org

run code in 300+ PHP versions simultaneously
<?php $var = "xyz\n"; $obj = new stdClass(); $obj->var = "abc\n"; $key = 'var'; echo $$key; // Works echo ${$key}; // Works // echo {$$key}; E_ERROR echo "$$key"; // Does not work? Outputs "$var" echo "${$key}"; // Works echo "{$$key}"; // Works echo $obj->var; // Works echo $obj->{$key}; // Works // echo $obj->${key}; E_ERROR echo $obj->$$key; // E_NOTICE Undefined property echo $obj->${$key}; // E_NOTICE Undefined property echo $obj->{$$key}; // E_NOTICE Undefined property echo "$obj->var"; // Works // echo "${obj->var}"; // Syntax error echo "{$obj->var}"; // Works // echo "$obj->$$key"; // Catchable fatal error // echo "$obj->${$key}"; // Catchable fatal error // echo "$obj->{$$key}"; // Catchable fatal error // echo "${obj->$$key}"; // Syntax error // echo "${obj->${$key}}"; // Syntax error // echo "${obj->{$$key}}"; // Syntax error
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/dpbES
function name:  (null)
number of ops:  40
compiled vars:  !0 = $var, !1 = $obj, !2 = $key
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    2     0  E >   ASSIGN                                                   !0, 'xyz%0A'
    3     1        NEW                                              $4      'stdClass'
          2        DO_FCALL                                      0          
          3        ASSIGN                                                   !1, $4
    4     4        ASSIGN_OBJ                                               !1, 'var'
          5        OP_DATA                                                  'abc%0A'
    5     6        ASSIGN                                                   !2, 'var'
    7     7        FETCH_R                      local               ~9      !2
          8        ECHO                                                     ~9
    8     9        FETCH_R                      local               ~10     !2
         10        ECHO                                                     ~10
   11    11        NOP                                                      
         12        FAST_CONCAT                                      ~11     '%24', !2
         13        ECHO                                                     ~11
   12    14        FETCH_R                      local               ~12     !2
         15        CAST                                          6  ~13     ~12
         16        ECHO                                                     ~13
   13    17        FETCH_R                      local               ~14     !2
         18        CAST                                          6  ~15     ~14
         19        ECHO                                                     ~15
   15    20        FETCH_OBJ_R                                      ~16     !1, 'var'
         21        ECHO                                                     ~16
   16    22        FETCH_OBJ_R                                      ~17     !1, !2
         23        ECHO                                                     ~17
   19    24        FETCH_R                      local               ~18     !2
         25        FETCH_OBJ_R                                      ~19     !1, ~18
         26        ECHO                                                     ~19
   20    27        FETCH_R                      local               ~20     !2
         28        FETCH_OBJ_R                                      ~21     !1, ~20
         29        ECHO                                                     ~21
   21    30        FETCH_R                      local               ~22     !2
         31        FETCH_OBJ_R                                      ~23     !1, ~22
         32        ECHO                                                     ~23
   23    33        FETCH_OBJ_R                                      ~24     !1, 'var'
         34        CAST                                          6  ~25     ~24
         35        ECHO                                                     ~25
   25    36        FETCH_OBJ_R                                      ~26     !1, 'var'
         37        CAST                                          6  ~27     ~26
         38        ECHO                                                     ~27
   34    39      > RETURN                                                   1

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
258.14 ms | 996 KiB | 13 Q