3v4l.org

run code in 300+ PHP versions simultaneously
<?php $hotels = [ ['Cala', 3, 8.7, 6000], ['Ocean', 3, 8.2, 6150], ['Orchid', 3, 8.0, 7200], ['Ya', 3, 8.7, 6950], ['Chaba', 3, 8.2, 7120], ]; $totalHotelsNumber = 2; $starCoef = 0.2; $ratingCoef = 2000; for ( $i=0; $i<count($hotels); $i++ ) { $hotels[4] = 0; } for ( $i=0; $i<count($hotels); $i++ ) { for ( $j=$i+1; $j<count($hotels); $j++ ) { echo $j.' - '.$hotels[$j][0]; echo 'Comparing '.$hotels[$i][0].' and '.$hotels[$j][0].'...'."\r\n"; $starDifference = $hotels[$i][1]-$hotels[$j][1]; $ratingToCompensate = $starDifference*$starCoef; $rating = $hotels[$i][2]+$ratingToCompensate; $ratingDifference = $rating-$hotels[$j][2]; $priceToCompensate = $ratingDifference*$ratingCoef; $price = $hotels[$i][3]-$priceToCompensate; echo $price.' VS '.$hotels[$j][3]."\r\n"; if ( $price > $hotels[$j][3] ) { echo $hotels[$i][0].' wins!'."\r\n"; $hotels[$i][4]++; } else { echo $hotels[$j][0].' wins!'."\r\n"; $hotels[$j][4]++; } echo "\r\n".'----------'."\r\n"; } } usort($hotels, function($hotelA, $hotelB){ return $hotelB[4]-$hotelA[4]; }); echo "\r\n".'----------'."\r\n"; echo 'Top:'."\r\n\r\n"; for ( $i=0; $i<count($hotels); $i++ ) { echo $hotels[$i][0].': '.$hotels[$i][4]."\r\n"; } echo "\r\n".'----------'."\r\n"; echo 'Finalists:'."\r\n\r\n"; for ( $i=0; $i<=1; $i++ ) { echo $hotels[$i][0]."\r\n"; }
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 42) Position 1 = 9
Branch analysis from position: 9
2 jumps found. (Code = 44) Position 1 = 12, Position 2 = 6
Branch analysis from position: 12
1 jumps found. (Code = 42) Position 1 = 87
Branch analysis from position: 87
2 jumps found. (Code = 44) Position 1 = 90, Position 2 = 14
Branch analysis from position: 90
1 jumps found. (Code = 42) Position 1 = 108
Branch analysis from position: 108
2 jumps found. (Code = 44) Position 1 = 111, Position 2 = 99
Branch analysis from position: 111
1 jumps found. (Code = 42) Position 1 = 120
Branch analysis from position: 120
2 jumps found. (Code = 44) Position 1 = 122, Position 2 = 115
Branch analysis from position: 122
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 115
2 jumps found. (Code = 44) Position 1 = 122, Position 2 = 115
Branch analysis from position: 122
Branch analysis from position: 115
Branch analysis from position: 99
2 jumps found. (Code = 44) Position 1 = 111, Position 2 = 99
Branch analysis from position: 111
Branch analysis from position: 99
Branch analysis from position: 14
1 jumps found. (Code = 42) Position 1 = 83
Branch analysis from position: 83
2 jumps found. (Code = 44) Position 1 = 86, Position 2 = 17
Branch analysis from position: 86
2 jumps found. (Code = 44) Position 1 = 90, Position 2 = 14
Branch analysis from position: 90
Branch analysis from position: 14
Branch analysis from position: 17
2 jumps found. (Code = 43) Position 1 = 64, Position 2 = 73
Branch analysis from position: 64
1 jumps found. (Code = 42) Position 1 = 81
Branch analysis from position: 81
2 jumps found. (Code = 44) Position 1 = 86, Position 2 = 17
Branch analysis from position: 86
Branch analysis from position: 17
Branch analysis from position: 73
2 jumps found. (Code = 44) Position 1 = 86, Position 2 = 17
Branch analysis from position: 86
Branch analysis from position: 17
Branch analysis from position: 6
2 jumps found. (Code = 44) Position 1 = 12, Position 2 = 6
Branch analysis from position: 12
Branch analysis from position: 6
filename:       /in/aX9PN
function name:  (null)
number of ops:  123
compiled vars:  !0 = $hotels, !1 = $totalHotelsNumber, !2 = $starCoef, !3 = $ratingCoef, !4 = $i, !5 = $j, !6 = $starDifference, !7 = $ratingToCompensate, !8 = $rating, !9 = $ratingDifference, !10 = $priceToCompensate, !11 = $price
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    3     0  E >   ASSIGN                                                   !0, <array>
   11     1        ASSIGN                                                   !1, 2
   13     2        ASSIGN                                                   !2, 0.2
   14     3        ASSIGN                                                   !3, 2000
   16     4        ASSIGN                                                   !4, 0
          5      > JMP                                                      ->9
   17     6    >   ASSIGN_DIM                                               !0, 4
          7        OP_DATA                                                  0
   16     8        PRE_INC                                                  !4
          9    >   COUNT                                            ~19     !0
         10        IS_SMALLER                                               !4, ~19
         11      > JMPNZ                                                    ~20, ->6
   20    12    >   ASSIGN                                                   !4, 0
         13      > JMP                                                      ->87
   21    14    >   ADD                                              ~22     !4, 1
         15        ASSIGN                                                   !5, ~22
         16      > JMP                                                      ->83
   22    17    >   CONCAT                                           ~24     !5, '+-+'
         18        FETCH_DIM_R                                      ~25     !0, !5
         19        FETCH_DIM_R                                      ~26     ~25, 0
         20        CONCAT                                           ~27     ~24, ~26
         21        ECHO                                                     ~27
   23    22        FETCH_DIM_R                                      ~28     !0, !4
         23        FETCH_DIM_R                                      ~29     ~28, 0
         24        CONCAT                                           ~30     'Comparing+', ~29
         25        CONCAT                                           ~31     ~30, '+and+'
         26        FETCH_DIM_R                                      ~32     !0, !5
         27        FETCH_DIM_R                                      ~33     ~32, 0
         28        CONCAT                                           ~34     ~31, ~33
         29        CONCAT                                           ~35     ~34, '...'
         30        CONCAT                                           ~36     ~35, '%0D%0A'
         31        ECHO                                                     ~36
   25    32        FETCH_DIM_R                                      ~37     !0, !4
         33        FETCH_DIM_R                                      ~38     ~37, 1
         34        FETCH_DIM_R                                      ~39     !0, !5
         35        FETCH_DIM_R                                      ~40     ~39, 1
         36        SUB                                              ~41     ~38, ~40
         37        ASSIGN                                                   !6, ~41
   26    38        MUL                                              ~43     !6, !2
         39        ASSIGN                                                   !7, ~43
   27    40        FETCH_DIM_R                                      ~45     !0, !4
         41        FETCH_DIM_R                                      ~46     ~45, 2
         42        ADD                                              ~47     ~46, !7
         43        ASSIGN                                                   !8, ~47
   29    44        FETCH_DIM_R                                      ~49     !0, !5
         45        FETCH_DIM_R                                      ~50     ~49, 2
         46        SUB                                              ~51     !8, ~50
         47        ASSIGN                                                   !9, ~51
   30    48        MUL                                              ~53     !9, !3
         49        ASSIGN                                                   !10, ~53
   31    50        FETCH_DIM_R                                      ~55     !0, !4
         51        FETCH_DIM_R                                      ~56     ~55, 3
         52        SUB                                              ~57     ~56, !10
         53        ASSIGN                                                   !11, ~57
   33    54        CONCAT                                           ~59     !11, '+VS+'
         55        FETCH_DIM_R                                      ~60     !0, !5
         56        FETCH_DIM_R                                      ~61     ~60, 3
         57        CONCAT                                           ~62     ~59, ~61
         58        CONCAT                                           ~63     ~62, '%0D%0A'
         59        ECHO                                                     ~63
   34    60        FETCH_DIM_R                                      ~64     !0, !5
         61        FETCH_DIM_R                                      ~65     ~64, 3
         62        IS_SMALLER                                               ~65, !11
         63      > JMPZ                                                     ~66, ->73
   35    64    >   FETCH_DIM_R                                      ~67     !0, !4
         65        FETCH_DIM_R                                      ~68     ~67, 0
         66        CONCAT                                           ~69     ~68, '+wins%21'
         67        CONCAT                                           ~70     ~69, '%0D%0A'
         68        ECHO                                                     ~70
   36    69        FETCH_DIM_RW                                     $71     !0, !4
         70        FETCH_DIM_RW                                     $72     $71, 4
         71        PRE_INC                                                  $72
         72      > JMP                                                      ->81
   38    73    >   FETCH_DIM_R                                      ~74     !0, !5
         74        FETCH_DIM_R                                      ~75     ~74, 0
         75        CONCAT                                           ~76     ~75, '+wins%21'
         76        CONCAT                                           ~77     ~76, '%0D%0A'
         77        ECHO                                                     ~77
   39    78        FETCH_DIM_RW                                     $78     !0, !5
         79        FETCH_DIM_RW                                     $79     $78, 4
         80        PRE_INC                                                  $79
   42    81    >   ECHO                                                     '%0D%0A----------%0D%0A'
   21    82        PRE_INC                                                  !5
         83    >   COUNT                                            ~82     !0
         84        IS_SMALLER                                               !5, ~82
         85      > JMPNZ                                                    ~83, ->17
   20    86    >   PRE_INC                                                  !4
         87    >   COUNT                                            ~85     !0
         88        IS_SMALLER                                               !4, ~85
         89      > JMPNZ                                                    ~86, ->14
   46    90    >   INIT_FCALL                                               'usort'
         91        SEND_REF                                                 !0
         92        DECLARE_LAMBDA_FUNCTION                                  '%00%7Bclosure%7D%2Fin%2FaX9PN%3A46%240'
   48    93        SEND_VAL                                                 ~87
         94        DO_ICALL                                                 
   50    95        ECHO                                                     '%0D%0A----------%0D%0A'
   52    96        ECHO                                                     'Top%3A%0D%0A%0D%0A'
   53    97        ASSIGN                                                   !4, 0
         98      > JMP                                                      ->108
   54    99    >   FETCH_DIM_R                                      ~90     !0, !4
        100        FETCH_DIM_R                                      ~91     ~90, 0
        101        CONCAT                                           ~92     ~91, '%3A+'
        102        FETCH_DIM_R                                      ~93     !0, !4
        103        FETCH_DIM_R                                      ~94     ~93, 4
        104        CONCAT                                           ~95     ~92, ~94
        105        CONCAT                                           ~96     ~95, '%0D%0A'
        106        ECHO                                                     ~96
   53   107        PRE_INC                                                  !4
        108    >   COUNT                                            ~98     !0
        109        IS_SMALLER                                               !4, ~98
        110      > JMPNZ                                                    ~99, ->99
   57   111    >   ECHO                                                     '%0D%0A----------%0D%0A'
   58   112        ECHO                                                     'Finalists%3A%0D%0A%0D%0A'
   60   113        ASSIGN                                                   !4, 0
        114      > JMP                                                      ->120
   61   115    >   FETCH_DIM_R                                      ~101    !0, !4
        116        FETCH_DIM_R                                      ~102    ~101, 0
        117        CONCAT                                           ~103    ~102, '%0D%0A'
        118        ECHO                                                     ~103
   60   119        PRE_INC                                                  !4
        120    >   IS_SMALLER_OR_EQUAL                                      !4, 1
        121      > JMPNZ                                                    ~105, ->115
   62   122    > > RETURN                                                   1

Function %00%7Bclosure%7D%2Fin%2FaX9PN%3A46%240:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/aX9PN
function name:  {closure}
number of ops:  7
compiled vars:  !0 = $hotelA, !1 = $hotelB
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   46     0  E >   RECV                                             !0      
          1        RECV                                             !1      
   47     2        FETCH_DIM_R                                      ~2      !1, 4
          3        FETCH_DIM_R                                      ~3      !0, 4
          4        SUB                                              ~4      ~2, ~3
          5      > RETURN                                                   ~4
   48     6*     > RETURN                                                   null

End of function %00%7Bclosure%7D%2Fin%2FaX9PN%3A46%240

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
162.92 ms | 1413 KiB | 15 Q