3v4l.org

run code in 300+ PHP versions simultaneously
<?php $obj1 = [['main' => 10, 'fallback' => 5]]; $obj2 = [['main' => null, 'fallback' => 5]]; $obj3 = [['main' => null, 'fallback' => null]]; $obj4 = [[]]; $obj5 = [['fallback' => 5]]; $obj6 = [['main' => 10]]; function doStuff($obj) { return $obj[0]['main'] ?? $obj[0]['fallback'] ?? 0; } var_dump(doStuff($obj1)); var_dump(doStuff($obj2)); var_dump(doStuff($obj3)); var_dump(doStuff($obj4)); var_dump(doStuff($obj5)); var_dump(doStuff($obj6));
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/l49oT
function name:  (null)
number of ops:  43
compiled vars:  !0 = $obj1, !1 = $obj2, !2 = $obj3, !3 = $obj4, !4 = $obj5, !5 = $obj6
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    3     0  E >   ASSIGN                                                   !0, <array>
    4     1        ASSIGN                                                   !1, <array>
    5     2        ASSIGN                                                   !2, <array>
    6     3        ASSIGN                                                   !3, <array>
    7     4        ASSIGN                                                   !4, <array>
    8     5        ASSIGN                                                   !5, <array>
   14     6        INIT_FCALL                                               'var_dump'
          7        INIT_FCALL                                               'dostuff'
          8        SEND_VAR                                                 !0
          9        DO_FCALL                                      0  $12     
         10        SEND_VAR                                                 $12
         11        DO_ICALL                                                 
   15    12        INIT_FCALL                                               'var_dump'
         13        INIT_FCALL                                               'dostuff'
         14        SEND_VAR                                                 !1
         15        DO_FCALL                                      0  $14     
         16        SEND_VAR                                                 $14
         17        DO_ICALL                                                 
   16    18        INIT_FCALL                                               'var_dump'
         19        INIT_FCALL                                               'dostuff'
         20        SEND_VAR                                                 !2
         21        DO_FCALL                                      0  $16     
         22        SEND_VAR                                                 $16
         23        DO_ICALL                                                 
   17    24        INIT_FCALL                                               'var_dump'
         25        INIT_FCALL                                               'dostuff'
         26        SEND_VAR                                                 !3
         27        DO_FCALL                                      0  $18     
         28        SEND_VAR                                                 $18
         29        DO_ICALL                                                 
   18    30        INIT_FCALL                                               'var_dump'
         31        INIT_FCALL                                               'dostuff'
         32        SEND_VAR                                                 !4
         33        DO_FCALL                                      0  $20     
         34        SEND_VAR                                                 $20
         35        DO_ICALL                                                 
   19    36        INIT_FCALL                                               'var_dump'
         37        INIT_FCALL                                               'dostuff'
         38        SEND_VAR                                                 !5
         39        DO_FCALL                                      0  $22     
         40        SEND_VAR                                                 $22
         41        DO_ICALL                                                 
         42      > RETURN                                                   1

Function dostuff:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/l49oT
function name:  doStuff
number of ops:  11
compiled vars:  !0 = $obj
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   10     0  E >   RECV                                             !0      
   11     1        FETCH_DIM_IS                                     ~1      !0, 0
          2        FETCH_DIM_IS                                     ~2      ~1, 'main'
          3        COALESCE                                         ~3      ~2
          4        FETCH_DIM_IS                                     ~4      !0, 0
          5        FETCH_DIM_IS                                     ~5      ~4, 'fallback'
          6        COALESCE                                         ~6      ~5
          7        QM_ASSIGN                                        ~6      0
          8        QM_ASSIGN                                        ~3      ~6
          9      > RETURN                                                   ~3
   12    10*     > RETURN                                                   null

End of function dostuff

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
173.98 ms | 1403 KiB | 21 Q