3v4l.org

run code in 300+ PHP versions simultaneously
<?php function test_case($a, $b, $c) { // Without Parenthesis if ($a || $b && $c) { $test1 = TRUE; } else { $test1 = FALSE; } // With Parenthesis if (($a || $b) && $c) { $test2 = TRUE; } else { $test2 = FALSE; } // Compare result if ($test1 !== $test2) { printf( 'Condition (%s || %s && %s) does NOT match ((%s || %s) && %s) --- Should have been "%s" but was actually "%s"'.PHP_EOL, strtoupper(var_export($a, TRUE)), strtoupper(var_export($b, TRUE)), strtoupper(var_export($c, TRUE)), strtoupper(var_export($a, TRUE)), strtoupper(var_export($b, TRUE)), strtoupper(var_export($c, TRUE)), strtoupper(var_export($test2, TRUE)), strtoupper(var_export($test1, TRUE)) ); } else { printf( 'Condition (%s || %s && %s) works as intended'.PHP_EOL, strtoupper(var_export($a, TRUE)), strtoupper(var_export($b, TRUE)), strtoupper(var_export($c, TRUE)) ); } } // Test all possible variations test_case(TRUE, TRUE, TRUE); test_case(TRUE, TRUE, FALSE); test_case(TRUE, FALSE, TRUE); test_case(TRUE, FALSE, FALSE); test_case(FALSE, TRUE, TRUE); test_case(FALSE, TRUE, FALSE); test_case(FALSE, FALSE, TRUE); test_case(FALSE, FALSE, FALSE);
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/SmIip
function name:  (null)
number of ops:  41
compiled vars:  none
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   41     0  E >   INIT_FCALL                                               'test_case'
          1        SEND_VAL                                                 <true>
          2        SEND_VAL                                                 <true>
          3        SEND_VAL                                                 <true>
          4        DO_FCALL                                      0          
   42     5        INIT_FCALL                                               'test_case'
          6        SEND_VAL                                                 <true>
          7        SEND_VAL                                                 <true>
          8        SEND_VAL                                                 <false>
          9        DO_FCALL                                      0          
   43    10        INIT_FCALL                                               'test_case'
         11        SEND_VAL                                                 <true>
         12        SEND_VAL                                                 <false>
         13        SEND_VAL                                                 <true>
         14        DO_FCALL                                      0          
   44    15        INIT_FCALL                                               'test_case'
         16        SEND_VAL                                                 <true>
         17        SEND_VAL                                                 <false>
         18        SEND_VAL                                                 <false>
         19        DO_FCALL                                      0          
   45    20        INIT_FCALL                                               'test_case'
         21        SEND_VAL                                                 <false>
         22        SEND_VAL                                                 <true>
         23        SEND_VAL                                                 <true>
         24        DO_FCALL                                      0          
   46    25        INIT_FCALL                                               'test_case'
         26        SEND_VAL                                                 <false>
         27        SEND_VAL                                                 <true>
         28        SEND_VAL                                                 <false>
         29        DO_FCALL                                      0          
   47    30        INIT_FCALL                                               'test_case'
         31        SEND_VAL                                                 <false>
         32        SEND_VAL                                                 <false>
         33        SEND_VAL                                                 <true>
         34        DO_FCALL                                      0          
   48    35        INIT_FCALL                                               'test_case'
         36        SEND_VAL                                                 <false>
         37        SEND_VAL                                                 <false>
         38        SEND_VAL                                                 <false>
         39        DO_FCALL                                      0          
         40      > RETURN                                                   1

Function test_case:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 47) Position 1 = 4, Position 2 = 7
Branch analysis from position: 4
2 jumps found. (Code = 46) Position 1 = 5, Position 2 = 6
Branch analysis from position: 5
2 jumps found. (Code = 43) Position 1 = 8, Position 2 = 10
Branch analysis from position: 8
1 jumps found. (Code = 42) Position 1 = 11
Branch analysis from position: 11
2 jumps found. (Code = 47) Position 1 = 12, Position 2 = 13
Branch analysis from position: 12
2 jumps found. (Code = 46) Position 1 = 14, Position 2 = 15
Branch analysis from position: 14
2 jumps found. (Code = 43) Position 1 = 16, Position 2 = 18
Branch analysis from position: 16
1 jumps found. (Code = 42) Position 1 = 19
Branch analysis from position: 19
2 jumps found. (Code = 43) Position 1 = 21, Position 2 = 89
Branch analysis from position: 21
1 jumps found. (Code = 42) Position 1 = 116
Branch analysis from position: 116
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 89
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 18
2 jumps found. (Code = 43) Position 1 = 21, Position 2 = 89
Branch analysis from position: 21
Branch analysis from position: 89
Branch analysis from position: 15
Branch analysis from position: 13
Branch analysis from position: 10
2 jumps found. (Code = 47) Position 1 = 12, Position 2 = 13
Branch analysis from position: 12
Branch analysis from position: 13
Branch analysis from position: 6
Branch analysis from position: 7
filename:       /in/SmIip
function name:  test_case
number of ops:  117
compiled vars:  !0 = $a, !1 = $b, !2 = $c, !3 = $test1, !4 = $test2
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    2     0  E >   RECV                                             !0      
          1        RECV                                             !1      
          2        RECV                                             !2      
    4     3      > JMPNZ_EX                                         ~5      !0, ->7
          4    > > JMPZ_EX                                          ~6      !1, ->6
          5    >   BOOL                                             ~6      !2
          6    >   BOOL                                             ~5      ~6
          7    > > JMPZ                                                     ~5, ->10
    5     8    >   ASSIGN                                                   !3, <true>
    4     9      > JMP                                                      ->11
    7    10    >   ASSIGN                                                   !3, <false>
   11    11    > > JMPNZ_EX                                         ~9      !0, ->13
         12    >   BOOL                                             ~9      !1
         13    > > JMPZ_EX                                          ~9      ~9, ->15
         14    >   BOOL                                             ~9      !2
         15    > > JMPZ                                                     ~9, ->18
   12    16    >   ASSIGN                                                   !4, <true>
   11    17      > JMP                                                      ->19
   14    18    >   ASSIGN                                                   !4, <false>
   18    19    >   IS_NOT_IDENTICAL                                         !3, !4
         20      > JMPZ                                                     ~12, ->89
   19    21    >   INIT_FCALL                                               'printf'
   20    22        SEND_VAL                                                 'Condition+%28%25s+%7C%7C+%25s+%26%26+%25s%29+does+NOT+match+%28%28%25s+%7C%7C+%25s%29+%26%26+%25s%29+---+Should+have+been+%22%25s%22+but+was+actually+%22%25s%22%0A'
   21    23        INIT_FCALL                                               'strtoupper'
         24        INIT_FCALL                                               'var_export'
         25        SEND_VAR                                                 !0
         26        SEND_VAL                                                 <true>
         27        DO_ICALL                                         $13     
         28        SEND_VAR                                                 $13
         29        DO_ICALL                                         $14     
         30        SEND_VAR                                                 $14
   22    31        INIT_FCALL                                               'strtoupper'
         32        INIT_FCALL                                               'var_export'
         33        SEND_VAR                                                 !1
         34        SEND_VAL                                                 <true>
         35        DO_ICALL                                         $15     
         36        SEND_VAR                                                 $15
         37        DO_ICALL                                         $16     
         38        SEND_VAR                                                 $16
   23    39        INIT_FCALL                                               'strtoupper'
         40        INIT_FCALL                                               'var_export'
         41        SEND_VAR                                                 !2
         42        SEND_VAL                                                 <true>
         43        DO_ICALL                                         $17     
         44        SEND_VAR                                                 $17
         45        DO_ICALL                                         $18     
         46        SEND_VAR                                                 $18
   24    47        INIT_FCALL                                               'strtoupper'
         48        INIT_FCALL                                               'var_export'
         49        SEND_VAR                                                 !0
         50        SEND_VAL                                                 <true>
         51        DO_ICALL                                         $19     
         52        SEND_VAR                                                 $19
         53        DO_ICALL                                         $20     
         54        SEND_VAR                                                 $20
   25    55        INIT_FCALL                                               'strtoupper'
         56        INIT_FCALL                                               'var_export'
         57        SEND_VAR                                                 !1
         58        SEND_VAL                                                 <true>
         59        DO_ICALL                                         $21     
         60        SEND_VAR                                                 $21
         61        DO_ICALL                                         $22     
         62        SEND_VAR                                                 $22
   26    63        INIT_FCALL                                               'strtoupper'
         64        INIT_FCALL                                               'var_export'
         65        SEND_VAR                                                 !2
         66        SEND_VAL                                                 <true>
         67        DO_ICALL                                         $23     
         68        SEND_VAR                                                 $23
         69        DO_ICALL                                         $24     
         70        SEND_VAR                                                 $24
   27    71        INIT_FCALL                                               'strtoupper'
         72        INIT_FCALL                                               'var_export'
         73        SEND_VAR                                                 !4
         74        SEND_VAL                                                 <true>
         75        DO_ICALL                                         $25     
         76        SEND_VAR                                                 $25
         77        DO_ICALL                                         $26     
         78        SEND_VAR                                                 $26
   28    79        INIT_FCALL                                               'strtoupper'
         80        INIT_FCALL                                               'var_export'
         81        SEND_VAR                                                 !3
         82        SEND_VAL                                                 <true>
         83        DO_ICALL                                         $27     
         84        SEND_VAR                                                 $27
         85        DO_ICALL                                         $28     
         86        SEND_VAR                                                 $28
   19    87        DO_ICALL                                                 
   18    88      > JMP                                                      ->116
   31    89    >   INIT_FCALL                                               'printf'
   32    90        SEND_VAL                                                 'Condition+%28%25s+%7C%7C+%25s+%26%26+%25s%29+works+as+intended%0A'
   33    91        INIT_FCALL                                               'strtoupper'
         92        INIT_FCALL                                               'var_export'
         93        SEND_VAR                                                 !0
         94        SEND_VAL                                                 <true>
         95        DO_ICALL                                         $30     
         96        SEND_VAR                                                 $30
         97        DO_ICALL                                         $31     
         98        SEND_VAR                                                 $31
   34    99        INIT_FCALL                                               'strtoupper'
        100        INIT_FCALL                                               'var_export'
        101        SEND_VAR                                                 !1
        102        SEND_VAL                                                 <true>
        103        DO_ICALL                                         $32     
        104        SEND_VAR                                                 $32
        105        DO_ICALL                                         $33     
        106        SEND_VAR                                                 $33
   35   107        INIT_FCALL                                               'strtoupper'
        108        INIT_FCALL                                               'var_export'
        109        SEND_VAR                                                 !2
        110        SEND_VAL                                                 <true>
        111        DO_ICALL                                         $34     
        112        SEND_VAR                                                 $34
        113        DO_ICALL                                         $35     
        114        SEND_VAR                                                 $35
   31   115        DO_ICALL                                                 
   38   116    > > RETURN                                                   null

End of function test_case

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
250.38 ms | 1028 KiB | 24 Q