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; 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 = 83
Branch analysis from position: 83
2 jumps found. (Code = 44) Position 1 = 86, Position 2 = 14
Branch analysis from position: 86
1 jumps found. (Code = 42) Position 1 = 104
Branch analysis from position: 104
2 jumps found. (Code = 44) Position 1 = 107, Position 2 = 95
Branch analysis from position: 107
1 jumps found. (Code = 42) Position 1 = 116
Branch analysis from position: 116
2 jumps found. (Code = 44) Position 1 = 118, Position 2 = 111
Branch analysis from position: 118
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 111
2 jumps found. (Code = 44) Position 1 = 118, Position 2 = 111
Branch analysis from position: 118
Branch analysis from position: 111
Branch analysis from position: 95
2 jumps found. (Code = 44) Position 1 = 107, Position 2 = 95
Branch analysis from position: 107
Branch analysis from position: 95
Branch analysis from position: 14
1 jumps found. (Code = 42) Position 1 = 79
Branch analysis from position: 79
2 jumps found. (Code = 44) Position 1 = 82, Position 2 = 17
Branch analysis from position: 82
2 jumps found. (Code = 44) Position 1 = 86, Position 2 = 14
Branch analysis from position: 86
Branch analysis from position: 14
Branch analysis from position: 17
2 jumps found. (Code = 43) Position 1 = 60, Position 2 = 69
Branch analysis from position: 60
1 jumps found. (Code = 42) Position 1 = 77
Branch analysis from position: 77
2 jumps found. (Code = 44) Position 1 = 82, Position 2 = 17
Branch analysis from position: 82
Branch analysis from position: 17
Branch analysis from position: 69
2 jumps found. (Code = 44) Position 1 = 82, Position 2 = 17
Branch analysis from position: 82
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/2rS3C
function name:  (null)
number of ops:  119
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                                                      ->83
   21    14    >   ADD                                              ~22     !4, 1
         15        ASSIGN                                                   !5, ~22
         16      > JMP                                                      ->79
   22    17    >   ECHO                                                     !5
   23    18        FETCH_DIM_R                                      ~24     !0, !4
         19        FETCH_DIM_R                                      ~25     ~24, 0
         20        CONCAT                                           ~26     'Comparing+', ~25
         21        CONCAT                                           ~27     ~26, '+and+'
         22        FETCH_DIM_R                                      ~28     !0, !5
         23        FETCH_DIM_R                                      ~29     ~28, 0
         24        CONCAT                                           ~30     ~27, ~29
         25        CONCAT                                           ~31     ~30, '...'
         26        CONCAT                                           ~32     ~31, '%0D%0A'
         27        ECHO                                                     ~32
   25    28        FETCH_DIM_R                                      ~33     !0, !4
         29        FETCH_DIM_R                                      ~34     ~33, 1
         30        FETCH_DIM_R                                      ~35     !0, !5
         31        FETCH_DIM_R                                      ~36     ~35, 1
         32        SUB                                              ~37     ~34, ~36
         33        ASSIGN                                                   !6, ~37
   26    34        MUL                                              ~39     !6, !2
         35        ASSIGN                                                   !7, ~39
   27    36        FETCH_DIM_R                                      ~41     !0, !4
         37        FETCH_DIM_R                                      ~42     ~41, 2
         38        ADD                                              ~43     ~42, !7
         39        ASSIGN                                                   !8, ~43
   29    40        FETCH_DIM_R                                      ~45     !0, !5
         41        FETCH_DIM_R                                      ~46     ~45, 2
         42        SUB                                              ~47     !8, ~46
         43        ASSIGN                                                   !9, ~47
   30    44        MUL                                              ~49     !9, !3
         45        ASSIGN                                                   !10, ~49
   31    46        FETCH_DIM_R                                      ~51     !0, !4
         47        FETCH_DIM_R                                      ~52     ~51, 3
         48        SUB                                              ~53     ~52, !10
         49        ASSIGN                                                   !11, ~53
   33    50        CONCAT                                           ~55     !11, '+VS+'
         51        FETCH_DIM_R                                      ~56     !0, !5
         52        FETCH_DIM_R                                      ~57     ~56, 3
         53        CONCAT                                           ~58     ~55, ~57
         54        CONCAT                                           ~59     ~58, '%0D%0A'
         55        ECHO                                                     ~59
   34    56        FETCH_DIM_R                                      ~60     !0, !5
         57        FETCH_DIM_R                                      ~61     ~60, 3
         58        IS_SMALLER                                               ~61, !11
         59      > JMPZ                                                     ~62, ->69
   35    60    >   FETCH_DIM_R                                      ~63     !0, !4
         61        FETCH_DIM_R                                      ~64     ~63, 0
         62        CONCAT                                           ~65     ~64, '+wins%21'
         63        CONCAT                                           ~66     ~65, '%0D%0A'
         64        ECHO                                                     ~66
   36    65        FETCH_DIM_RW                                     $67     !0, !4
         66        FETCH_DIM_RW                                     $68     $67, 4
         67        PRE_INC                                                  $68
         68      > JMP                                                      ->77
   38    69    >   FETCH_DIM_R                                      ~70     !0, !5
         70        FETCH_DIM_R                                      ~71     ~70, 0
         71        CONCAT                                           ~72     ~71, '+wins%21'
         72        CONCAT                                           ~73     ~72, '%0D%0A'
         73        ECHO                                                     ~73
   39    74        FETCH_DIM_RW                                     $74     !0, !5
         75        FETCH_DIM_RW                                     $75     $74, 4
         76        PRE_INC                                                  $75
   42    77    >   ECHO                                                     '%0D%0A----------%0D%0A'
   21    78        PRE_INC                                                  !5
         79    >   COUNT                                            ~78     !0
         80        IS_SMALLER                                               !5, ~78
         81      > JMPNZ                                                    ~79, ->17
   20    82    >   PRE_INC                                                  !4
         83    >   COUNT                                            ~81     !0
         84        IS_SMALLER                                               !4, ~81
         85      > JMPNZ                                                    ~82, ->14
   46    86    >   INIT_FCALL                                               'usort'
         87        SEND_REF                                                 !0
         88        DECLARE_LAMBDA_FUNCTION                                  '%00%7Bclosure%7D%2Fin%2F2rS3C%3A46%240'
   48    89        SEND_VAL                                                 ~83
         90        DO_ICALL                                                 
   50    91        ECHO                                                     '%0D%0A----------%0D%0A'
   52    92        ECHO                                                     'Top%3A%0D%0A%0D%0A'
   53    93        ASSIGN                                                   !4, 0
         94      > JMP                                                      ->104
   54    95    >   FETCH_DIM_R                                      ~86     !0, !4
         96        FETCH_DIM_R                                      ~87     ~86, 0
         97        CONCAT                                           ~88     ~87, '%3A+'
         98        FETCH_DIM_R                                      ~89     !0, !4
         99        FETCH_DIM_R                                      ~90     ~89, 4
        100        CONCAT                                           ~91     ~88, ~90
        101        CONCAT                                           ~92     ~91, '%0D%0A'
        102        ECHO                                                     ~92
   53   103        PRE_INC                                                  !4
        104    >   COUNT                                            ~94     !0
        105        IS_SMALLER                                               !4, ~94
        106      > JMPNZ                                                    ~95, ->95
   57   107    >   ECHO                                                     '%0D%0A----------%0D%0A'
   58   108        ECHO                                                     'Finalists%3A%0D%0A%0D%0A'
   60   109        ASSIGN                                                   !4, 0
        110      > JMP                                                      ->116
   61   111    >   FETCH_DIM_R                                      ~97     !0, !4
        112        FETCH_DIM_R                                      ~98     ~97, 0
        113        CONCAT                                           ~99     ~98, '%0D%0A'
        114        ECHO                                                     ~99
   60   115        PRE_INC                                                  !4
        116    >   IS_SMALLER_OR_EQUAL                                      !4, 1
        117      > JMPNZ                                                    ~101, ->111
   62   118    > > RETURN                                                   1

Function %00%7Bclosure%7D%2Fin%2F2rS3C%3A46%240:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/2rS3C
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%2F2rS3C%3A46%240

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
183.06 ms | 1408 KiB | 15 Q