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

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

End of function %00%7Bclosure%7D%2Fin%2FTTkrh%3A48%240

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
155.14 ms | 1408 KiB | 17 Q