3v4l.org

run code in 500+ PHP versions simultaneously
<?php function test_pair($k1, $v1, $k2, $v2) { echo "$k1 cmp $k2:\n"; try { echo (($v1 === $v2) ? "T " : "F "); } catch (Exception $e) { echo "Err "; } try { echo (($v1 !== $v2) ? "T " : "F "); } catch (Exception $e) { echo "Err "; } try { echo (($v1 < $v2) ? "T " : "F "); } catch (Exception $e) { echo "Err "; } try { echo (($v1 <= $v2) ? "T " : "F "); } catch (Exception $e) { echo "Err "; } try { echo (($v1 == $v2) ? "T " : "F "); } catch (Exception $e) { echo "Err "; } try { echo (($v1 != $v2) ? "T " : "F "); } catch (Exception $e) { echo "Err "; } try { echo (($v1 >= $v2) ? "T " : "F "); } catch (Exception $e) { echo "Err "; } try { echo (($v1 > $v2) ? "T " : "F "); } catch (Exception $e) { echo "Err "; } try { $cmp = $v1 <=> $v2; echo "$cmp"; } catch (Exception $e) { echo "Err"; } echo "\n"; } function test() { $aobj1 = new ArrayObject(array('a' => 'b')); $aobj2 = new ArrayObject(array('a' => 'b')); $aobj2->c = 'd'; $aiter1 = new ArrayIterator(array('a' => 'b')); $aiter2 = new ArrayIterator(array('a' => 'b')); $aiter2->c = 'd'; $xml1 = simplexml_load_string("<apple />"); $xml2 = simplexml_load_string("<pie><apple /></pie>"); $pairs = array( array( array('k' => 'ArrayObject 1', 'v' => $aobj1), array('k' => 'ArrayObject 2', 'v' => $aobj2), ), array( array('k' => 'ArrayIterator 1', 'v' => $aiter1), array('k' => 'ArrayIterator 2', 'v' => $aiter2), ), array( array('k' => 'SimpleXMLElement 1', 'v' => $xml1), array('k' => 'SimpleXMLElement 2', 'v' => $xml2), ), ); echo "\nsame nsame lt lte eq neq gte gt cmp\n\n"; foreach ($pairs as $p) { test_pair($p[0]['k'], $p[0]['v'], $p[1]['k'], $p[1]['v']); test_pair($p[1]['k'], $p[1]['v'], $p[0]['k'], $p[0]['v']); } } test();
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/vlQoe
function name:  (null)
number of ops:  3
compiled vars:  none
line      #* E I O op                               fetch          ext  return  operands
-----------------------------------------------------------------------------------------
   85     0  E >   INIT_FCALL                                                   'test'
          1        DO_FCALL                                          0          
          2      > RETURN                                                       1

Function test_pair:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 43) Position 1 = 11, Position 2 = 13
Branch analysis from position: 11
1 jumps found. (Code = 42) Position 1 = 14
Branch analysis from position: 14
1 jumps found. (Code = 42) Position 1 = 18
Branch analysis from position: 18
2 jumps found. (Code = 43) Position 1 = 20, Position 2 = 22
Branch analysis from position: 20
1 jumps found. (Code = 42) Position 1 = 23
Branch analysis from position: 23
1 jumps found. (Code = 42) Position 1 = 27
Branch analysis from position: 27
2 jumps found. (Code = 43) Position 1 = 29, Position 2 = 31
Branch analysis from position: 29
1 jumps found. (Code = 42) Position 1 = 32
Branch analysis from position: 32
1 jumps found. (Code = 42) Position 1 = 36
Branch analysis from position: 36
2 jumps found. (Code = 43) Position 1 = 38, Position 2 = 40
Branch analysis from position: 38
1 jumps found. (Code = 42) Position 1 = 41
Branch analysis from position: 41
1 jumps found. (Code = 42) Position 1 = 45
Branch analysis from position: 45
2 jumps found. (Code = 43) Position 1 = 47, Position 2 = 49
Branch analysis from position: 47
1 jumps found. (Code = 42) Position 1 = 50
Branch analysis from position: 50
1 jumps found. (Code = 42) Position 1 = 54
Branch analysis from position: 54
2 jumps found. (Code = 43) Position 1 = 56, Position 2 = 58
Branch analysis from position: 56
1 jumps found. (Code = 42) Position 1 = 59
Branch analysis from position: 59
1 jumps found. (Code = 42) Position 1 = 63
Branch analysis from position: 63
2 jumps found. (Code = 43) Position 1 = 65, Position 2 = 67
Branch analysis from position: 65
1 jumps found. (Code = 42) Position 1 = 68
Branch analysis from position: 68
1 jumps found. (Code = 42) Position 1 = 72
Branch analysis from position: 72
2 jumps found. (Code = 43) Position 1 = 74, Position 2 = 76
Branch analysis from position: 74
1 jumps found. (Code = 42) Position 1 = 77
Branch analysis from position: 77
1 jumps found. (Code = 42) Position 1 = 81
Branch analysis from position: 81
1 jumps found. (Code = 42) Position 1 = 88
Branch analysis from position: 88
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 76
1 jumps found. (Code = 42) Position 1 = 81
Branch analysis from position: 81
Branch analysis from position: 67
1 jumps found. (Code = 42) Position 1 = 72
Branch analysis from position: 72
Branch analysis from position: 58
1 jumps found. (Code = 42) Position 1 = 63
Branch analysis from position: 63
Branch analysis from position: 49
1 jumps found. (Code = 42) Position 1 = 54
Branch analysis from position: 54
Branch analysis from position: 40
1 jumps found. (Code = 42) Position 1 = 45
Branch analysis from position: 45
Branch analysis from position: 31
1 jumps found. (Code = 42) Position 1 = 36
Branch analysis from position: 36
Branch analysis from position: 22
1 jumps found. (Code = 42) Position 1 = 27
Branch analysis from position: 27
Branch analysis from position: 13
1 jumps found. (Code = 42) Position 1 = 18
Branch analysis from position: 18
Found catch point at position: 16
Branch analysis from position: 16
2 jumps found. (Code = 107) Position 1 = 17, Position 2 = -2
Branch analysis from position: 17
2 jumps found. (Code = 43) Position 1 = 20, Position 2 = 22
Branch analysis from position: 20
Branch analysis from position: 22
Found catch point at position: 25
Branch analysis from position: 25
2 jumps found. (Code = 107) Position 1 = 26, Position 2 = -2
Branch analysis from position: 26
2 jumps found. (Code = 43) Position 1 = 29, Position 2 = 31
Branch analysis from position: 29
Branch analysis from position: 31
Found catch point at position: 34
Branch analysis from position: 34
2 jumps found. (Code = 107) Position 1 = 35, Position 2 = -2
Branch analysis from position: 35
2 jumps found. (Code = 43) Position 1 = 38, Position 2 = 40
Branch analysis from position: 38
Branch analysis from position: 40
Found catch point at position: 43
Branch analysis from position: 43
2 jumps found. (Code = 107) Position 1 = 44, Position 2 = -2
Branch analysis from position: 44
2 jumps found. (Code = 43) Position 1 = 47, Position 2 = 49
Branch analysis from position: 47
Branch analysis from position: 49
Found catch point at position: 52
Branch analysis from position: 52
2 jumps found. (Code = 107) Position 1 = 53, Position 2 = -2
Branch analysis from position: 53
2 jumps found. (Code = 43) Position 1 = 56, Position 2 = 58
Branch analysis from position: 56
Branch analysis from position: 58
Found catch point at position: 61
Branch analysis from position: 61
2 jumps found. (Code = 107) Position 1 = 62, Position 2 = -2
Branch analysis from position: 62
2 jumps found. (Code = 43) Position 1 = 65, Position 2 = 67
Branch analysis from position: 65
Branch analysis from position: 67
Found catch point at position: 70
Branch analysis from position: 70
2 jumps found. (Code = 107) Position 1 = 71, Position 2 = -2
Branch analysis from position: 71
2 jumps found. (Code = 43) Position 1 = 74, Position 2 = 76
Branch analysis from position: 74
Branch analysis from position: 76
Found catch point at position: 79
Branch analysis from position: 79
2 jumps found. (Code = 107) Position 1 = 80, Position 2 = -2
Branch analysis from position: 80
1 jumps found. (Code = 42) Position 1 = 88
Branch analysis from position: 88
Found catch point at position: 86
Branch analysis from position: 86
2 jumps found. (Code = 107) Position 1 = 87, Position 2 = -2
Branch analysis from position: 87
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/vlQoe
function name:  test_pair
number of ops:  90
compiled vars:  !0 = $k1, !1 = $v1, !2 = $k2, !3 = $v2, !4 = $e, !5 = $cmp
line      #* E I O op                               fetch          ext  return  operands
-----------------------------------------------------------------------------------------
    3     0  E >   RECV                                                 !0      
          1        RECV                                                 !1      
          2        RECV                                                 !2      
          3        RECV                                                 !3      
    4     4        ROPE_INIT                                         4  ~7      !0
          5        ROPE_ADD                                          1  ~7      ~7, '+cmp+'
          6        ROPE_ADD                                          2  ~7      ~7, !2
          7        ROPE_END                                          3  ~6      ~7, '%3A%0A'
          8        ECHO                                                         ~6
    6     9        IS_IDENTICAL                                                 !1, !3
         10      > JMPZ                                                         ~9, ->13
         11    >   QM_ASSIGN                                            ~10     'T+++++++'
         12      > JMP                                                          ->14
         13    >   QM_ASSIGN                                            ~10     'F+++++++'
         14    >   ECHO                                                         ~10
         15      > JMP                                                          ->18
    7    16  E > > CATCH                                           last         'Exception'
    8    17    >   ECHO                                                         'Err+++++'
   11    18    >   IS_NOT_IDENTICAL                                             !1, !3
         19      > JMPZ                                                         ~11, ->22
         20    >   QM_ASSIGN                                            ~12     'T+++++++'
         21      > JMP                                                          ->23
         22    >   QM_ASSIGN                                            ~12     'F+++++++'
         23    >   ECHO                                                         ~12
         24      > JMP                                                          ->27
   12    25  E > > CATCH                                           last         'Exception'
   13    26    >   ECHO                                                         'Err+++++'
   16    27    >   IS_SMALLER                                                   !1, !3
         28      > JMPZ                                                         ~13, ->31
         29    >   QM_ASSIGN                                            ~14     'T+++++++'
         30      > JMP                                                          ->32
         31    >   QM_ASSIGN                                            ~14     'F+++++++'
         32    >   ECHO                                                         ~14
         33      > JMP                                                          ->36
   17    34  E > > CATCH                                           last         'Exception'
   18    35    >   ECHO                                                         'Err+++++'
   21    36    >   IS_SMALLER_OR_EQUAL                                          !1, !3
         37      > JMPZ                                                         ~15, ->40
         38    >   QM_ASSIGN                                            ~16     'T+++++++'
         39      > JMP                                                          ->41
         40    >   QM_ASSIGN                                            ~16     'F+++++++'
         41    >   ECHO                                                         ~16
         42      > JMP                                                          ->45
   22    43  E > > CATCH                                           last         'Exception'
   23    44    >   ECHO                                                         'Err+++++'
   26    45    >   IS_EQUAL                                                     !1, !3
         46      > JMPZ                                                         ~17, ->49
         47    >   QM_ASSIGN                                            ~18     'T+++++++'
         48      > JMP                                                          ->50
         49    >   QM_ASSIGN                                            ~18     'F+++++++'
         50    >   ECHO                                                         ~18
         51      > JMP                                                          ->54
   27    52  E > > CATCH                                           last         'Exception'
   28    53    >   ECHO                                                         'Err+++++'
   31    54    >   IS_NOT_EQUAL                                                 !1, !3
         55      > JMPZ                                                         ~19, ->58
         56    >   QM_ASSIGN                                            ~20     'T+++++++'
         57      > JMP                                                          ->59
         58    >   QM_ASSIGN                                            ~20     'F+++++++'
         59    >   ECHO                                                         ~20
         60      > JMP                                                          ->63
   32    61  E > > CATCH                                           last         'Exception'
   33    62    >   ECHO                                                         'Err+++++'
   36    63    >   IS_SMALLER_OR_EQUAL                                          !3, !1
         64      > JMPZ                                                         ~21, ->67
         65    >   QM_ASSIGN                                            ~22     'T+++++++'
         66      > JMP                                                          ->68
         67    >   QM_ASSIGN                                            ~22     'F+++++++'
         68    >   ECHO                                                         ~22
         69      > JMP                                                          ->72
   37    70  E > > CATCH                                           last         'Exception'
   38    71    >   ECHO                                                         'Err+++++'
   41    72    >   IS_SMALLER                                                   !3, !1
         73      > JMPZ                                                         ~23, ->76
         74    >   QM_ASSIGN                                            ~24     'T+++++++'
         75      > JMP                                                          ->77
         76    >   QM_ASSIGN                                            ~24     'F+++++++'
         77    >   ECHO                                                         ~24
         78      > JMP                                                          ->81
   42    79  E > > CATCH                                           last         'Exception'
   43    80    >   ECHO                                                         'Err+++++'
   46    81    >   SPACESHIP                                            ~25     !1, !3
         82        ASSIGN                                                       !5, ~25
   47    83        CAST                                              6  ~27     !5
         84        ECHO                                                         ~27
         85      > JMP                                                          ->88
   48    86  E > > CATCH                                           last         'Exception'
   49    87    >   ECHO                                                         'Err'
   52    88    >   ECHO                                                         '%0A'
   53    89      > RETURN                                                       null

End of function test_pair

Function test:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 77) Position 1 = 52, Position 2 = 82
Branch analysis from position: 52
2 jumps found. (Code = 78) Position 1 = 53, Position 2 = 82
Branch analysis from position: 53
1 jumps found. (Code = 42) Position 1 = 52
Branch analysis from position: 52
Branch analysis from position: 82
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 82
filename:       /in/vlQoe
function name:  test
number of ops:  84
compiled vars:  !0 = $aobj1, !1 = $aobj2, !2 = $aiter1, !3 = $aiter2, !4 = $xml1, !5 = $xml2, !6 = $pairs, !7 = $p
line      #* E I O op                               fetch          ext  return  operands
-----------------------------------------------------------------------------------------
   56     0  E >   NEW                                                  $8      'ArrayObject'
          1        SEND_VAL_EX                                                  <array>
          2        DO_FCALL                                          0          
          3        ASSIGN                                                       !0, $8
   57     4        NEW                                                  $11     'ArrayObject'
          5        SEND_VAL_EX                                                  <array>
          6        DO_FCALL                                          0          
          7        ASSIGN                                                       !1, $11
          8        ASSIGN_OBJ                                                   !1, 'c'
          9        OP_DATA                                                      'd'
   58    10        NEW                                                  $15     'ArrayIterator'
         11        SEND_VAL_EX                                                  <array>
         12        DO_FCALL                                          0          
         13        ASSIGN                                                       !2, $15
   59    14        NEW                                                  $18     'ArrayIterator'
         15        SEND_VAL_EX                                                  <array>
         16        DO_FCALL                                          0          
         17        ASSIGN                                                       !3, $18
         18        ASSIGN_OBJ                                                   !3, 'c'
         19        OP_DATA                                                      'd'
   60    20        INIT_FCALL                                                   'simplexml_load_string'
         21        SEND_VAL                                                     '%3Capple+%2F%3E'
         22        DO_ICALL                                             $22     
         23        ASSIGN                                                       !4, $22
   61    24        INIT_FCALL                                                   'simplexml_load_string'
         25        SEND_VAL                                                     '%3Cpie%3E%3Capple+%2F%3E%3C%2Fpie%3E'
         26        DO_ICALL                                             $24     
         27        ASSIGN                                                       !5, $24
   65    28        INIT_ARRAY                                           ~26     'ArrayObject+1', 'k'
         29        ADD_ARRAY_ELEMENT                                    ~26     !0, 'v'
         30        INIT_ARRAY                                           ~27     ~26
   66    31        INIT_ARRAY                                           ~28     'ArrayObject+2', 'k'
         32        ADD_ARRAY_ELEMENT                                    ~28     !1, 'v'
         33        ADD_ARRAY_ELEMENT                                    ~27     ~28
         34        INIT_ARRAY                                           ~29     ~27
   69    35        INIT_ARRAY                                           ~30     'ArrayIterator+1', 'k'
         36        ADD_ARRAY_ELEMENT                                    ~30     !2, 'v'
         37        INIT_ARRAY                                           ~31     ~30
   70    38        INIT_ARRAY                                           ~32     'ArrayIterator+2', 'k'
         39        ADD_ARRAY_ELEMENT                                    ~32     !3, 'v'
         40        ADD_ARRAY_ELEMENT                                    ~31     ~32
         41        ADD_ARRAY_ELEMENT                                    ~29     ~31
   73    42        INIT_ARRAY                                           ~33     'SimpleXMLElement+1', 'k'
         43        ADD_ARRAY_ELEMENT                                    ~33     !4, 'v'
         44        INIT_ARRAY                                           ~34     ~33
   74    45        INIT_ARRAY                                           ~35     'SimpleXMLElement+2', 'k'
         46        ADD_ARRAY_ELEMENT                                    ~35     !5, 'v'
         47        ADD_ARRAY_ELEMENT                                    ~34     ~35
         48        ADD_ARRAY_ELEMENT                                    ~29     ~34
   63    49        ASSIGN                                                       !6, ~29
   78    50        ECHO                                                         '%0Asame++++nsame+++lt++++++lte+++++eq++++++neq+++++gte+++++gt++++++cmp%0A%0A'
   79    51      > FE_RESET_R                                           $37     !6, ->82
         52    > > FE_FETCH_R                                                   $37, !7, ->82
   80    53    >   INIT_FCALL                                                   'test_pair'
         54        FETCH_DIM_R                                          ~38     !7, 0
         55        FETCH_DIM_R                                          ~39     ~38, 'k'
         56        SEND_VAL                                                     ~39
         57        FETCH_DIM_R                                          ~40     !7, 0
         58        FETCH_DIM_R                                          ~41     ~40, 'v'
         59        SEND_VAL                                                     ~41
         60        FETCH_DIM_R                                          ~42     !7, 1
         61        FETCH_DIM_R                                          ~43     ~42, 'k'
         62        SEND_VAL                                                     ~43
         63        FETCH_DIM_R                                          ~44     !7, 1
         64        FETCH_DIM_R                                          ~45     ~44, 'v'
         65        SEND_VAL                                                     ~45
         66        DO_FCALL                                          0          
   81    67        INIT_FCALL                                                   'test_pair'
         68        FETCH_DIM_R                                          ~47     !7, 1
         69        FETCH_DIM_R                                          ~48     ~47, 'k'
         70        SEND_VAL                                                     ~48
         71        FETCH_DIM_R                                          ~49     !7, 1
         72        FETCH_DIM_R                                          ~50     ~49, 'v'
         73        SEND_VAL                                                     ~50
         74        FETCH_DIM_R                                          ~51     !7, 0
         75        FETCH_DIM_R                                          ~52     ~51, 'k'
         76        SEND_VAL                                                     ~52
         77        FETCH_DIM_R                                          ~53     !7, 0
         78        FETCH_DIM_R                                          ~54     ~53, 'v'
         79        SEND_VAL                                                     ~54
         80        DO_FCALL                                          0          
   79    81      > JMP                                                          ->52
         82    >   FE_FREE                                                      $37
   83    83      > RETURN                                                       null

End of function test

Generated using Vulcan Logic Dumper, using php 8.5.0


preferences:
172.16 ms | 2284 KiB | 17 Q