3v4l.org

run code in 300+ PHP versions simultaneously
<?php $myVar = "original"; testFunc([$myVar]); echo "Variable value: $myVar <br>"; // Output is: "Variable value: original" testFunc([&$myVar]); echo "Variable value: $myVar <br>"; // Output is: "Variable value: changed" testFunc([&$undefinedVar]); echo "Variable value: $undefinedVar<br>"; // Output is: "Variable value: changed" @testFunc([$undefinedVar_2]); echo @"Variable value: $undefinedVar_2<br>"; // Output is: "Variable value: " function testFunc( array $arr ) : void { ob_start(); var_dump($arr); if(preg_match('#&(int|NULL|string)#',ob_get_clean())){ print 'is ref '; var_dump($arr); } if ( !is_array($arr) || count($arr) == 0 ) return; $arr[0] = 'changed'; }
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/AkSgW
function name:  (null)
number of ops:  38
compiled vars:  !0 = $myVar, !1 = $undefinedVar, !2 = $undefinedVar_2
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    2     0  E >   ASSIGN                                                   !0, 'original'
    3     1        INIT_FCALL_BY_NAME                                       'testFunc'
          2        INIT_ARRAY                                       ~4      !0
          3        SEND_VAL_EX                                              ~4
          4        DO_FCALL                                      0          
    4     5        ROPE_INIT                                     3  ~7      'Variable+value%3A+'
          6        ROPE_ADD                                      1  ~7      ~7, !0
          7        ROPE_END                                      2  ~6      ~7, '+%3Cbr%3E'
          8        ECHO                                                     ~6
    5     9        INIT_FCALL_BY_NAME                                       'testFunc'
         10        INIT_ARRAY                                       ~9      !0
         11        SEND_VAL_EX                                              ~9
         12        DO_FCALL                                      0          
    6    13        ROPE_INIT                                     3  ~12     'Variable+value%3A+'
         14        ROPE_ADD                                      1  ~12     ~12, !0
         15        ROPE_END                                      2  ~11     ~12, '+%3Cbr%3E'
         16        ECHO                                                     ~11
    8    17        INIT_FCALL_BY_NAME                                       'testFunc'
         18        INIT_ARRAY                                       ~14     !1
         19        SEND_VAL_EX                                              ~14
         20        DO_FCALL                                      0          
    9    21        ROPE_INIT                                     3  ~17     'Variable+value%3A+'
         22        ROPE_ADD                                      1  ~17     ~17, !1
         23        ROPE_END                                      2  ~16     ~17, '%3Cbr%3E'
         24        ECHO                                                     ~16
   10    25        BEGIN_SILENCE                                    ~19     
         26        INIT_FCALL_BY_NAME                                       'testFunc'
         27        INIT_ARRAY                                       ~20     !2
         28        SEND_VAL_EX                                              ~20
         29        DO_FCALL                                      0          
         30        END_SILENCE                                              ~19
   11    31        BEGIN_SILENCE                                    ~22     
         32        ROPE_INIT                                     3  ~24     'Variable+value%3A+'
         33        ROPE_ADD                                      1  ~24     ~24, !2
         34        ROPE_END                                      2  ~23     ~24, '%3Cbr%3E'
         35        END_SILENCE                                              ~22
         36        ECHO                                                     ~23
   25    37      > RETURN                                                   1

Function testfunc:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 43) Position 1 = 13, Position 2 = 17
Branch analysis from position: 13
2 jumps found. (Code = 47) Position 1 = 20, Position 2 = 23
Branch analysis from position: 20
2 jumps found. (Code = 43) Position 1 = 24, Position 2 = 25
Branch analysis from position: 24
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 25
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 23
Branch analysis from position: 17
filename:       /in/AkSgW
function name:  testFunc
number of ops:  28
compiled vars:  !0 = $arr
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   13     0  E >   RECV                                             !0      
   15     1        INIT_FCALL                                               'ob_start'
          2        DO_ICALL                                                 
   16     3        INIT_FCALL                                               'var_dump'
          4        SEND_VAR                                                 !0
          5        DO_ICALL                                                 
   17     6        INIT_FCALL                                               'preg_match'
          7        SEND_VAL                                                 '%23%26%28int%7CNULL%7Cstring%29%23'
          8        INIT_FCALL                                               'ob_get_clean'
          9        DO_ICALL                                         $3      
         10        SEND_VAR                                                 $3
         11        DO_ICALL                                         $4      
         12      > JMPZ                                                     $4, ->17
   18    13    >   ECHO                                                     'is+ref+'
   19    14        INIT_FCALL                                               'var_dump'
         15        SEND_VAR                                                 !0
         16        DO_ICALL                                                 
   22    17    >   TYPE_CHECK                                  128  ~6      !0
         18        BOOL_NOT                                         ~7      ~6
         19      > JMPNZ_EX                                         ~7      ~7, ->23
         20    >   COUNT                                            ~8      !0
         21        IS_EQUAL                                         ~9      ~8, 0
         22        BOOL                                             ~7      ~9
         23    > > JMPZ                                                     ~7, ->25
   23    24    > > RETURN                                                   null
   24    25    >   ASSIGN_DIM                                               !0, 0
         26        OP_DATA                                                  'changed'
   25    27      > RETURN                                                   null

End of function testfunc

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
149.69 ms | 1018 KiB | 17 Q