3v4l.org

run code in 300+ PHP versions simultaneously
<?php // よくある変数宣言と代入の例 $a = 17; // グローバルスコープに現在定義されているすべての変数への参照を含む連想配列である $GLOBALS から $a を見る // @see https://www.php.net/manual/ja/reserved.variables.globals.php echo '$a: '.$GLOBALS['a']."\n"; // $a: 17 // $0 を作る例 // $0 = 31; // ←は文法エラーとなります。 // 次リンクには" 有効な変数名は文字またはアンダースコアから始まり、任意の数の文字、 数字、アンダースコアが続きます"とあります。 // https://www.php.net/manual/ja/language.variables.basics.php // $0 がグローバルスコープにないことを確認 var_dump(isset($GLOBALS[0])); // bool(false) // 可変変数で変数名として 0 を使います $varName = 0; $$varName = 31; // $0 がグローバルスコープに増えたことを確認 var_dump(isset($GLOBALS[0])); // bool(true) echo '$0: '.$GLOBALS[0]."\n"; // $0: 31 // グローバルスコープ参照 echo '$0: '.$$varName."\n"; // $0: 31 // 可変変数参照 echo "$0: ${$varName}\n"; // $0: 31 // 可変変数的文字列中の変数のパース https://www.php.net/manual/ja/language.types.string.php#language.types.string.parsing echo "$0: ${0}\n"; // $0: 31 // 直打ち的文字列中の変数のパース https://www.php.net/manual/ja/language.types.string.php#language.types.string.parsing // また、上の $0 同様にこれを利用して定義済み変数の $GLOBALS とは別のグローバルスコープ下にある $GLOBALS を作れます。 // $GLOBALS が通常のグローバルスコープ下にないことを確認 var_dump(isset($GLOBALS['GLOBALS'])); // bool(false) $varName = 'GLOBALS'; $$varName = 47; // $GLOBALS が通常のグローバルスコープ下に増えたことを確認 var_dump(isset($GLOBALS['GLOBALS'])); // bool(true) echo '$GLOBALS: '.$GLOBALS['GLOBALS']."\n"; // $GLOBALS: 47 // 通常のグローバルスコープ参照 echo '$GLOBALS: '.$$varName."\n"; // $GLOBALS: 47 // 可変変数参照 // 文字列宙の変数のパースでは可変変数的に呼び出すか定義済み名そのもので呼び出すかで挙動が変わります。 // 可変変数的に文字列中の変数のパース echo "\$GLOBALS: ${$varName}\n"; // $GLOBALS: 47 // 定義済み名そのもので文字列中の変数のパース echo "\$GLOBALS: ${'GLOBALS'}\n"; // Warning: Array to string conversion in xxx // $GLOBALS: Array
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/2nUnl
function name:  (null)
number of ops:  63
compiled vars:  !0 = $a, !1 = $varName, !2 = $0
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    4     0  E >   ASSIGN                                                   !0, 17
    7     1        FETCH_R                      global              ~4      'a'
          2        CONCAT                                           ~5      '%24a%3A+', ~4
          3        CONCAT                                           ~6      ~5, '%0A'
          4        ECHO                                                     ~6
   14     5        INIT_FCALL                                               'var_dump'
          6        ISSET_ISEMPTY_VAR                             2  ~7      '0'
          7        SEND_VAL                                                 ~7
          8        DO_ICALL                                                 
   16     9        ASSIGN                                                   !1, 0
   17    10        FETCH_W                      local               $10     !1
         11        ASSIGN                                                   $10, 31
   19    12        INIT_FCALL                                               'var_dump'
         13        ISSET_ISEMPTY_VAR                             2  ~12     '0'
         14        SEND_VAL                                                 ~12
         15        DO_ICALL                                                 
   20    16        FETCH_R                      global              ~14     '0'
         17        CONCAT                                           ~15     '%240%3A+', ~14
         18        CONCAT                                           ~16     ~15, '%0A'
         19        ECHO                                                     ~16
   21    20        FETCH_R                      local               ~17     !1
         21        CONCAT                                           ~18     '%240%3A+', ~17
         22        CONCAT                                           ~19     ~18, '%0A'
         23        ECHO                                                     ~19
   22    24        ROPE_INIT                                     3  ~22     '%240%3A+'
         25        FETCH_R                      local               ~20     !1
         26        ROPE_ADD                                      1  ~22     ~22, ~20
         27        ROPE_END                                      2  ~21     ~22, '%0A'
         28        ECHO                                                     ~21
   23    29        ROPE_INIT                                     3  ~25     '%240%3A+'
         30        ROPE_ADD                                      1  ~25     ~25, !2
         31        ROPE_END                                      2  ~24     ~25, '%0A'
         32        ECHO                                                     ~24
   27    33        INIT_FCALL                                               'var_dump'
         34        ISSET_ISEMPTY_VAR                             2  ~27     'GLOBALS'
         35        SEND_VAL                                                 ~27
         36        DO_ICALL                                                 
   29    37        ASSIGN                                                   !1, 'GLOBALS'
   30    38        FETCH_W                      local               $30     !1
         39        ASSIGN                                                   $30, 47
   32    40        INIT_FCALL                                               'var_dump'
         41        ISSET_ISEMPTY_VAR                             2  ~32     'GLOBALS'
         42        SEND_VAL                                                 ~32
         43        DO_ICALL                                                 
   33    44        FETCH_R                      global              ~34     'GLOBALS'
         45        CONCAT                                           ~35     '%24GLOBALS%3A+', ~34
         46        CONCAT                                           ~36     ~35, '%0A'
         47        ECHO                                                     ~36
   34    48        FETCH_R                      local               ~37     !1
         49        CONCAT                                           ~38     '%24GLOBALS%3A+', ~37
         50        CONCAT                                           ~39     ~38, '%0A'
         51        ECHO                                                     ~39
   38    52        ROPE_INIT                                     3  ~42     '%24GLOBALS%3A+'
         53        FETCH_R                      local               ~40     !1
         54        ROPE_ADD                                      1  ~42     ~42, ~40
         55        ROPE_END                                      2  ~41     ~42, '%0A'
         56        ECHO                                                     ~41
   40    57        ROPE_INIT                                     3  ~46     '%24GLOBALS%3A+'
         58        FETCH_GLOBALS                                    ~44     
         59        ROPE_ADD                                      1  ~46     ~46, ~44
         60        ROPE_END                                      2  ~45     ~46, '%0A'
         61        ECHO                                                     ~45
   42    62      > RETURN                                                   1

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
168.18 ms | 1450 KiB | 14 Q