3v4l.org

run code in 300+ PHP versions simultaneously
<?php $b=99;$l="\n";while($b > 0) {$d='bottle'.($b>1?'s':'');echo "$b $d of beer on the wall, $b $d of beer.$l";$b--;echo ($b==0?'Go to the store and buy some more, ':'Take one down and pass it around, ').($b===0?99:$b).' bottles of beer on the wall.'.$l.$l;}
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 42) Position 1 = 36
Branch analysis from position: 36
2 jumps found. (Code = 44) Position 1 = 38, Position 2 = 3
Branch analysis from position: 38
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 3
2 jumps found. (Code = 43) Position 1 = 5, Position 2 = 7
Branch analysis from position: 5
1 jumps found. (Code = 42) Position 1 = 8
Branch analysis from position: 8
2 jumps found. (Code = 43) Position 1 = 23, Position 2 = 25
Branch analysis from position: 23
1 jumps found. (Code = 42) Position 1 = 26
Branch analysis from position: 26
2 jumps found. (Code = 43) Position 1 = 28, Position 2 = 30
Branch analysis from position: 28
1 jumps found. (Code = 42) Position 1 = 31
Branch analysis from position: 31
2 jumps found. (Code = 44) Position 1 = 38, Position 2 = 3
Branch analysis from position: 38
Branch analysis from position: 3
Branch analysis from position: 30
2 jumps found. (Code = 44) Position 1 = 38, Position 2 = 3
Branch analysis from position: 38
Branch analysis from position: 3
Branch analysis from position: 25
2 jumps found. (Code = 43) Position 1 = 28, Position 2 = 30
Branch analysis from position: 28
Branch analysis from position: 30
Branch analysis from position: 7
2 jumps found. (Code = 43) Position 1 = 23, Position 2 = 25
Branch analysis from position: 23
Branch analysis from position: 25
filename:       /in/fnO8S
function name:  (null)
number of ops:  39
compiled vars:  !0 = $b, !1 = $l, !2 = $d
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    2     0  E >   ASSIGN                                                   !0, 99
          1        ASSIGN                                                   !1, '%0A'
          2      > JMP                                                      ->36
          3    >   IS_SMALLER                                               1, !0
          4      > JMPZ                                                     ~5, ->7
          5    >   QM_ASSIGN                                        ~6      's'
          6      > JMP                                                      ->8
          7    >   QM_ASSIGN                                        ~6      ''
          8    >   CONCAT                                           ~7      'bottle', ~6
          9        ASSIGN                                                   !2, ~7
         10        ROPE_INIT                                     9  ~10     !0
         11        ROPE_ADD                                      1  ~10     ~10, '+'
         12        ROPE_ADD                                      2  ~10     ~10, !2
         13        ROPE_ADD                                      3  ~10     ~10, '+of+beer+on+the+wall%2C+'
         14        ROPE_ADD                                      4  ~10     ~10, !0
         15        ROPE_ADD                                      5  ~10     ~10, '+'
         16        ROPE_ADD                                      6  ~10     ~10, !2
         17        ROPE_ADD                                      7  ~10     ~10, '+of+beer.'
         18        ROPE_END                                      8  ~9      ~10, !1
         19        ECHO                                                     ~9
         20        PRE_DEC                                                  !0
         21        IS_EQUAL                                                 !0, 0
         22      > JMPZ                                                     ~16, ->25
         23    >   QM_ASSIGN                                        ~17     'Go+to+the+store+and+buy+some+more%2C+'
         24      > JMP                                                      ->26
         25    >   QM_ASSIGN                                        ~17     'Take+one+down+and+pass+it+around%2C+'
         26    >   IS_IDENTICAL                                             !0, 0
         27      > JMPZ                                                     ~18, ->30
         28    >   QM_ASSIGN                                        ~19     99
         29      > JMP                                                      ->31
         30    >   QM_ASSIGN                                        ~19     !0
         31    >   CONCAT                                           ~20     ~17, ~19
         32        CONCAT                                           ~21     ~20, '+bottles+of+beer+on+the+wall.'
         33        CONCAT                                           ~22     ~21, !1
         34        CONCAT                                           ~23     ~22, !1
         35        ECHO                                                     ~23
         36    >   IS_SMALLER                                               0, !0
         37      > JMPNZ                                                    ~24, ->3
         38    > > RETURN                                                   1

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
153.5 ms | 1390 KiB | 13 Q