3v4l.org

run code in 300+ PHP versions simultaneously
<?php $a = null; print $a ?? 'b'; print "\n"; print $a ?: 'b'; print "\n"; print $c ?? 'a'; print "\n"; print $c ?: 'a'; print "\n"; $b = array('a' => null); print $b ?? 'c'; print "\n"; print $b ?: 'c'; print "\n"; print $b['a'] ?? 'd'; print "\n"; print $b['a'] ?: 'd'; print "\n"; print $b['c'] ?? 'e'; print "\n"; print $b['c'] ?: 'e'; print "\n"; print false ?? 'f'; print "\n"; print false ?: 'g'; print "\n";
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/Z6U2M
function name:  (null)
number of ops:  55
compiled vars:  !0 = $a, !1 = $c, !2 = $b
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    3     0  E >   ASSIGN                                                   !0, null
    5     1        COALESCE                                         ~4      !0
          2        QM_ASSIGN                                        ~4      'b'
          3        ECHO                                                     ~4
    6     4        ECHO                                                     '%0A'
    8     5        JMP_SET                                          ~5      !0, ->7
          6        QM_ASSIGN                                        ~5      'b'
          7        ECHO                                                     ~5
    9     8        ECHO                                                     '%0A'
   11     9        COALESCE                                         ~6      !1
         10        QM_ASSIGN                                        ~6      'a'
         11        ECHO                                                     ~6
   12    12        ECHO                                                     '%0A'
   14    13        JMP_SET                                          ~7      !1, ->15
         14        QM_ASSIGN                                        ~7      'a'
         15        ECHO                                                     ~7
   15    16        ECHO                                                     '%0A'
   17    17        ASSIGN                                                   !2, <array>
   18    18        COALESCE                                         ~9      !2
         19        QM_ASSIGN                                        ~9      'c'
         20        ECHO                                                     ~9
   19    21        ECHO                                                     '%0A'
   21    22        JMP_SET                                          ~10     !2, ->24
         23        QM_ASSIGN                                        ~10     'c'
         24        ECHO                                                     ~10
   22    25        ECHO                                                     '%0A'
   24    26        FETCH_DIM_IS                                     ~11     !2, 'a'
         27        COALESCE                                         ~12     ~11
         28        QM_ASSIGN                                        ~12     'd'
         29        ECHO                                                     ~12
   25    30        ECHO                                                     '%0A'
   27    31        FETCH_DIM_R                                      ~13     !2, 'a'
         32        JMP_SET                                          ~14     ~13, ->34
         33        QM_ASSIGN                                        ~14     'd'
         34        ECHO                                                     ~14
   28    35        ECHO                                                     '%0A'
   30    36        FETCH_DIM_IS                                     ~15     !2, 'c'
         37        COALESCE                                         ~16     ~15
         38        QM_ASSIGN                                        ~16     'e'
         39        ECHO                                                     ~16
   31    40        ECHO                                                     '%0A'
   33    41        FETCH_DIM_R                                      ~17     !2, 'c'
         42        JMP_SET                                          ~18     ~17, ->44
         43        QM_ASSIGN                                        ~18     'e'
         44        ECHO                                                     ~18
   34    45        ECHO                                                     '%0A'
   36    46        COALESCE                                         ~19     <false>
         47        QM_ASSIGN                                        ~19     'f'
         48        ECHO                                                     ~19
   37    49        ECHO                                                     '%0A'
   39    50        JMP_SET                                          ~20     <false>, ->52
         51        QM_ASSIGN                                        ~20     'g'
         52        ECHO                                                     ~20
   40    53        ECHO                                                     '%0A'
         54      > RETURN                                                   1

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
144.23 ms | 1399 KiB | 13 Q