3v4l.org

run code in 300+ PHP versions simultaneously
<?php $x = 'yo'; for( $i = 0; $i <= 3; $i++ ) { echo "substr( '$x', $i ) is: ", var_export(substr( $x, $i ),true), "\n"; } echo "\n\n"; $x = ''; echo "substr( '$x', 0 ) is: ", var_export(substr( $x, 0 ),true), "\n"; echo "substr( '$x', 1 ) is: ", var_export(substr( $x, 1 ),true), "\n";
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 42) Position 1 = 20
Branch analysis from position: 20
2 jumps found. (Code = 44) Position 1 = 22, Position 2 = 3
Branch analysis from position: 22
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 3
2 jumps found. (Code = 44) Position 1 = 22, Position 2 = 3
Branch analysis from position: 22
Branch analysis from position: 3
filename:       /in/AspGv
function name:  (null)
number of ops:  53
compiled vars:  !0 = $x, !1 = $i
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    3     0  E >   ASSIGN                                                   !0, 'yo'
    4     1        ASSIGN                                                   !1, 0
          2      > JMP                                                      ->20
    5     3    >   ROPE_INIT                                     5  ~5      'substr%28+%27'
          4        ROPE_ADD                                      1  ~5      ~5, !0
          5        ROPE_ADD                                      2  ~5      ~5, '%27%2C+'
          6        ROPE_ADD                                      3  ~5      ~5, !1
          7        ROPE_END                                      4  ~4      ~5, '+%29+is%3A+'
          8        ECHO                                                     ~4
          9        INIT_FCALL                                               'var_export'
         10        INIT_FCALL                                               'substr'
         11        SEND_VAR                                                 !0
         12        SEND_VAR                                                 !1
         13        DO_ICALL                                         $8      
         14        SEND_VAR                                                 $8
         15        SEND_VAL                                                 <true>
         16        DO_ICALL                                         $9      
         17        ECHO                                                     $9
         18        ECHO                                                     '%0A'
    4    19        PRE_INC                                                  !1
         20    >   IS_SMALLER_OR_EQUAL                                      !1, 3
         21      > JMPNZ                                                    ~11, ->3
    8    22    >   ECHO                                                     '%0A%0A'
   10    23        ASSIGN                                                   !0, ''
   11    24        ROPE_INIT                                     3  ~14     'substr%28+%27'
         25        ROPE_ADD                                      1  ~14     ~14, !0
         26        ROPE_END                                      2  ~13     ~14, '%27%2C+0+%29+is%3A+'
         27        ECHO                                                     ~13
         28        INIT_FCALL                                               'var_export'
         29        INIT_FCALL                                               'substr'
         30        SEND_VAR                                                 !0
         31        SEND_VAL                                                 0
         32        DO_ICALL                                         $16     
         33        SEND_VAR                                                 $16
         34        SEND_VAL                                                 <true>
         35        DO_ICALL                                         $17     
         36        ECHO                                                     $17
         37        ECHO                                                     '%0A'
   12    38        ROPE_INIT                                     3  ~19     'substr%28+%27'
         39        ROPE_ADD                                      1  ~19     ~19, !0
         40        ROPE_END                                      2  ~18     ~19, '%27%2C+1+%29+is%3A+'
         41        ECHO                                                     ~18
         42        INIT_FCALL                                               'var_export'
         43        INIT_FCALL                                               'substr'
         44        SEND_VAR                                                 !0
         45        SEND_VAL                                                 1
         46        DO_ICALL                                         $21     
         47        SEND_VAR                                                 $21
         48        SEND_VAL                                                 <true>
         49        DO_ICALL                                         $22     
         50        ECHO                                                     $22
         51        ECHO                                                     '%0A'
         52      > RETURN                                                   1

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
169.66 ms | 1400 KiB | 17 Q