3v4l.org

run code in 500+ 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.5.0


preferences:
167.04 ms | 3385 KiB | 13 Q