3v4l.org

run code in 300+ PHP versions simultaneously
<?php echo PHP_EOL,'1)',PHP_EOL; $a = [1,2,3]; foreach($a as $v) {echo "{$v} - ", current($a), PHP_EOL;} echo PHP_EOL,'2)',PHP_EOL; $a = [1,2,3]; $b = &$a; foreach($a as $v) {echo "$v\n"; unset($a[1]);} echo PHP_EOL,'3)',PHP_EOL; $a = [1,2,3]; foreach($a as &$v) {echo $v . " - " . current($a) . "\n";}
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 77) Position 1 = 5, Position 2 = 15
Branch analysis from position: 5
2 jumps found. (Code = 78) Position 1 = 6, Position 2 = 15
Branch analysis from position: 6
1 jumps found. (Code = 42) Position 1 = 5
Branch analysis from position: 5
Branch analysis from position: 15
2 jumps found. (Code = 77) Position 1 = 22, Position 2 = 28
Branch analysis from position: 22
2 jumps found. (Code = 78) Position 1 = 23, Position 2 = 28
Branch analysis from position: 23
1 jumps found. (Code = 42) Position 1 = 22
Branch analysis from position: 22
Branch analysis from position: 28
2 jumps found. (Code = 125) Position 1 = 34, Position 2 = 43
Branch analysis from position: 34
2 jumps found. (Code = 126) Position 1 = 35, Position 2 = 43
Branch analysis from position: 35
1 jumps found. (Code = 42) Position 1 = 34
Branch analysis from position: 34
Branch analysis from position: 43
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 43
Branch analysis from position: 28
Branch analysis from position: 15
filename:       /in/8JAJk
function name:  (null)
number of ops:  45
compiled vars:  !0 = $a, !1 = $v, !2 = $b
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    3     0  E >   ECHO                                                     '%0A'
          1        ECHO                                                     '1%29'
          2        ECHO                                                     '%0A'
    4     3        ASSIGN                                                   !0, <array>
          4      > FE_RESET_R                                       $4      !0, ->15
          5    > > FE_FETCH_R                                               $4, !1, ->15
          6    >   NOP                                                      
          7        FAST_CONCAT                                      ~5      !1, '+-+'
          8        ECHO                                                     ~5
          9        INIT_FCALL                                               'current'
         10        SEND_VAR                                                 !0
         11        DO_ICALL                                         $6      
         12        ECHO                                                     $6
         13        ECHO                                                     '%0A'
         14      > JMP                                                      ->5
         15    >   FE_FREE                                                  $4
    7    16        ECHO                                                     '%0A'
         17        ECHO                                                     '2%29'
         18        ECHO                                                     '%0A'
    8    19        ASSIGN                                                   !0, <array>
         20        ASSIGN_REF                                               !2, !0
         21      > FE_RESET_R                                       $9      !0, ->28
         22    > > FE_FETCH_R                                               $9, !1, ->28
         23    >   NOP                                                      
         24        FAST_CONCAT                                      ~10     !1, '%0A'
         25        ECHO                                                     ~10
         26        UNSET_DIM                                                !0, 1
         27      > JMP                                                      ->22
         28    >   FE_FREE                                                  $9
   11    29        ECHO                                                     '%0A'
         30        ECHO                                                     '3%29'
         31        ECHO                                                     '%0A'
   12    32        ASSIGN                                                   !0, <array>
         33      > FE_RESET_RW                                      $12     !0, ->43
         34    > > FE_FETCH_RW                                              $12, !1, ->43
         35    >   CONCAT                                           ~13     !1, '+-+'
         36        INIT_FCALL                                               'current'
         37        SEND_VAR                                                 !0
         38        DO_ICALL                                         $14     
         39        CONCAT                                           ~15     ~13, $14
         40        CONCAT                                           ~16     ~15, '%0A'
         41        ECHO                                                     ~16
         42      > JMP                                                      ->34
         43    >   FE_FREE                                                  $12
         44      > RETURN                                                   1

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
171.45 ms | 1404 KiB | 15 Q