3v4l.org

run code in 300+ PHP versions simultaneously
<?php function f($num) { if($num < 20) { switch($num) { //case 0: return 'zero'; break; case 1: return 'one'; break; case 2: return 'two'; break; case 3: return 'three'; break; case 4: return 'four'; break; case 5: return 'five'; break; case 6: return 'six'; break; case 7: return 'seven'; break; case 8: return 'eight'; break; case 9: return 'nine'; break; case 10: return 'ten'; break; case 11: return 'eleven'; break; case 12: return 'twelve'; break; case 13: return 'thirteen'; break; case 15: return 'fifteen'; break; case 18: return 'eighteen'; break; default: //14, 16, 17, 19 return f($num-10).'teen'; break; } } $buf = (int)floor($num/10); $fraction = $num - $buf; switch($buf) { case 2: $str = 'twenty'; break; case 3: $str = 'thirty'; break; case 5: $str = 'fifty'; break; case 8: $str = 'eighty'; break; default: //4, 6, 7, 9 $str = f($buf).'ty'; break; } if($fraction > 0) { $str .= ' '.f($fraction); } return $str; } function timeInWords($h, $m) { $hstr = f($h); if($m == 0) { return $hstr." o' clock"; } if($m == 30) { return 'half past '.$hstr; } if($m < 30) { if($m == 15) { return 'quarter past '.$hstr; } return f($m).' minute'.($m > 0 ? 's': '').' past '.$hstr; } else { if($m == 45) { return 'quarter to '.f($h+1); } $mtmp = 60 - $m; return f($mtmp).' minute'.($m > 0 ? 's': '').' to '.f($h+1); } } echo timeInWords(6, 35);
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/KS1q4
function name:  (null)
number of ops:  6
compiled vars:  none
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   77     0  E >   INIT_FCALL                                               'timeinwords'
          1        SEND_VAL                                                 6
          2        SEND_VAL                                                 35
          3        DO_FCALL                                      0  $0      
          4        ECHO                                                     $0
          5      > RETURN                                                   1

Function f:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 43) Position 1 = 3, Position 2 = 72
Branch analysis from position: 3
17 jumps found. (Code = 187) Position 1 = 35, Position 2 = 37, Position 3 = 39, Position 4 = 41, Position 5 = 43, Position 6 = 45, Position 7 = 47, Position 8 = 49, Position 9 = 51, Position 10 = 53, Position 11 = 55, Position 12 = 57, Position 13 = 59, Position 14 = 61, Position 15 = 63, Position 16 = 65, Position 17 = 4
Branch analysis from position: 35
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 37
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 39
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 41
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 43
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 45
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 47
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 49
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 51
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 53
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 55
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 57
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 59
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 61
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 63
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 65
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 4
2 jumps found. (Code = 44) Position 1 = 6, Position 2 = 35
Branch analysis from position: 6
2 jumps found. (Code = 44) Position 1 = 8, Position 2 = 37
Branch analysis from position: 8
2 jumps found. (Code = 44) Position 1 = 10, Position 2 = 39
Branch analysis from position: 10
2 jumps found. (Code = 44) Position 1 = 12, Position 2 = 41
Branch analysis from position: 12
2 jumps found. (Code = 44) Position 1 = 14, Position 2 = 43
Branch analysis from position: 14
2 jumps found. (Code = 44) Position 1 = 16, Position 2 = 45
Branch analysis from position: 16
2 jumps found. (Code = 44) Position 1 = 18, Position 2 = 47
Branch analysis from position: 18
2 jumps found. (Code = 44) Position 1 = 20, Position 2 = 49
Branch analysis from position: 20
2 jumps found. (Code = 44) Position 1 = 22, Position 2 = 51
Branch analysis from position: 22
2 jumps found. (Code = 44) Position 1 = 24, Position 2 = 53
Branch analysis from position: 24
2 jumps found. (Code = 44) Position 1 = 26, Position 2 = 55
Branch analysis from position: 26
2 jumps found. (Code = 44) Position 1 = 28, Position 2 = 57
Branch analysis from position: 28
2 jumps found. (Code = 44) Position 1 = 30, Position 2 = 59
Branch analysis from position: 30
2 jumps found. (Code = 44) Position 1 = 32, Position 2 = 61
Branch analysis from position: 32
2 jumps found. (Code = 44) Position 1 = 34, Position 2 = 63
Branch analysis from position: 34
1 jumps found. (Code = 42) Position 1 = 65
Branch analysis from position: 65
Branch analysis from position: 63
Branch analysis from position: 61
Branch analysis from position: 59
Branch analysis from position: 57
Branch analysis from position: 55
Branch analysis from position: 53
Branch analysis from position: 51
Branch analysis from position: 49
Branch analysis from position: 47
Branch analysis from position: 45
Branch analysis from position: 43
Branch analysis from position: 41
Branch analysis from position: 39
Branch analysis from position: 37
Branch analysis from position: 35
Branch analysis from position: 72
6 jumps found. (Code = 187) Position 1 = 90, Position 2 = 92, Position 3 = 94, Position 4 = 96, Position 5 = 98, Position 6 = 81
Branch analysis from position: 90
1 jumps found. (Code = 42) Position 1 = 104
Branch analysis from position: 104
2 jumps found. (Code = 43) Position 1 = 106, Position 2 = 111
Branch analysis from position: 106
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 111
Branch analysis from position: 92
1 jumps found. (Code = 42) Position 1 = 104
Branch analysis from position: 104
Branch analysis from position: 94
1 jumps found. (Code = 42) Position 1 = 104
Branch analysis from position: 104
Branch analysis from position: 96
1 jumps found. (Code = 42) Position 1 = 104
Branch analysis from position: 104
Branch analysis from position: 98
1 jumps found. (Code = 42) Position 1 = 104
Branch analysis from position: 104
Branch analysis from position: 81
2 jumps found. (Code = 44) Position 1 = 83, Position 2 = 90
Branch analysis from position: 83
2 jumps found. (Code = 44) Position 1 = 85, Position 2 = 92
Branch analysis from position: 85
2 jumps found. (Code = 44) Position 1 = 87, Position 2 = 94
Branch analysis from position: 87
2 jumps found. (Code = 44) Position 1 = 89, Position 2 = 96
Branch analysis from position: 89
1 jumps found. (Code = 42) Position 1 = 98
Branch analysis from position: 98
Branch analysis from position: 96
Branch analysis from position: 94
Branch analysis from position: 92
Branch analysis from position: 90
filename:       /in/KS1q4
function name:  f
number of ops:  113
compiled vars:  !0 = $num, !1 = $buf, !2 = $fraction, !3 = $str
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    3     0  E >   RECV                                             !0      
    4     1        IS_SMALLER                                               !0, 20
          2      > JMPZ                                                     ~4, ->72
    5     3    > > SWITCH_LONG                                              !0, [ 1:->35, 2:->37, 3:->39, 4:->41, 5:->43, 6:->45, 7:->47, 8:->49, 9:->51, 10:->53, 11:->55, 12:->57, 13:->59, 15:->61, 18:->63, ], ->65
    7     4    >   IS_EQUAL                                                 !0, 1
          5      > JMPNZ                                                    ~5, ->35
    8     6    >   IS_EQUAL                                                 !0, 2
          7      > JMPNZ                                                    ~5, ->37
    9     8    >   IS_EQUAL                                                 !0, 3
          9      > JMPNZ                                                    ~5, ->39
   10    10    >   IS_EQUAL                                                 !0, 4
         11      > JMPNZ                                                    ~5, ->41
   11    12    >   IS_EQUAL                                                 !0, 5
         13      > JMPNZ                                                    ~5, ->43
   12    14    >   IS_EQUAL                                                 !0, 6
         15      > JMPNZ                                                    ~5, ->45
   13    16    >   IS_EQUAL                                                 !0, 7
         17      > JMPNZ                                                    ~5, ->47
   14    18    >   IS_EQUAL                                                 !0, 8
         19      > JMPNZ                                                    ~5, ->49
   15    20    >   IS_EQUAL                                                 !0, 9
         21      > JMPNZ                                                    ~5, ->51
   16    22    >   IS_EQUAL                                                 !0, 10
         23      > JMPNZ                                                    ~5, ->53
   17    24    >   IS_EQUAL                                                 !0, 11
         25      > JMPNZ                                                    ~5, ->55
   18    26    >   IS_EQUAL                                                 !0, 12
         27      > JMPNZ                                                    ~5, ->57
   19    28    >   IS_EQUAL                                                 !0, 13
         29      > JMPNZ                                                    ~5, ->59
   20    30    >   IS_EQUAL                                                 !0, 15
         31      > JMPNZ                                                    ~5, ->61
   21    32    >   IS_EQUAL                                                 !0, 18
         33      > JMPNZ                                                    ~5, ->63
         34    > > JMP                                                      ->65
    7    35    > > RETURN                                                   'one'
         36*       JMP                                                      ->72
    8    37    > > RETURN                                                   'two'
         38*       JMP                                                      ->72
    9    39    > > RETURN                                                   'three'
         40*       JMP                                                      ->72
   10    41    > > RETURN                                                   'four'
         42*       JMP                                                      ->72
   11    43    > > RETURN                                                   'five'
         44*       JMP                                                      ->72
   12    45    > > RETURN                                                   'six'
         46*       JMP                                                      ->72
   13    47    > > RETURN                                                   'seven'
         48*       JMP                                                      ->72
   14    49    > > RETURN                                                   'eight'
         50*       JMP                                                      ->72
   15    51    > > RETURN                                                   'nine'
         52*       JMP                                                      ->72
   16    53    > > RETURN                                                   'ten'
         54*       JMP                                                      ->72
   17    55    > > RETURN                                                   'eleven'
         56*       JMP                                                      ->72
   18    57    > > RETURN                                                   'twelve'
         58*       JMP                                                      ->72
   19    59    > > RETURN                                                   'thirteen'
         60*       JMP                                                      ->72
   20    61    > > RETURN                                                   'fifteen'
         62*       JMP                                                      ->72
   21    63    > > RETURN                                                   'eighteen'
         64*       JMP                                                      ->72
   23    65    >   INIT_FCALL_BY_NAME                                       'f'
         66        SUB                                              ~6      !0, 10
         67        SEND_VAL_EX                                              ~6
         68        DO_FCALL                                      0  $7      
         69        CONCAT                                           ~8      $7, 'teen'
         70      > RETURN                                                   ~8
   24    71*       JMP                                                      ->72
   28    72    >   INIT_FCALL                                               'floor'
         73        DIV                                              ~9      !0, 10
         74        SEND_VAL                                                 ~9
         75        DO_ICALL                                         $10     
         76        CAST                                          4  ~11     $10
         77        ASSIGN                                                   !1, ~11
   29    78        SUB                                              ~13     !0, !1
         79        ASSIGN                                                   !2, ~13
   31    80      > SWITCH_LONG                                              !1, [ 2:->90, 3:->92, 5:->94, 8:->96, ], ->98
   32    81    >   IS_EQUAL                                                 !1, 2
         82      > JMPNZ                                                    ~15, ->90
   33    83    >   IS_EQUAL                                                 !1, 3
         84      > JMPNZ                                                    ~15, ->92
   34    85    >   IS_EQUAL                                                 !1, 5
         86      > JMPNZ                                                    ~15, ->94
   35    87    >   IS_EQUAL                                                 !1, 8
         88      > JMPNZ                                                    ~15, ->96
         89    > > JMP                                                      ->98
   32    90    >   ASSIGN                                                   !3, 'twenty'
         91      > JMP                                                      ->104
   33    92    >   ASSIGN                                                   !3, 'thirty'
         93      > JMP                                                      ->104
   34    94    >   ASSIGN                                                   !3, 'fifty'
         95      > JMP                                                      ->104
   35    96    >   ASSIGN                                                   !3, 'eighty'
         97      > JMP                                                      ->104
   37    98    >   INIT_FCALL_BY_NAME                                       'f'
         99        SEND_VAR_EX                                              !1
        100        DO_FCALL                                      0  $20     
        101        CONCAT                                           ~21     $20, 'ty'
        102        ASSIGN                                                   !3, ~21
   38   103      > JMP                                                      ->104
   41   104    >   IS_SMALLER                                               0, !2
        105      > JMPZ                                                     ~23, ->111
   42   106    >   INIT_FCALL_BY_NAME                                       'f'
        107        SEND_VAR_EX                                              !2
        108        DO_FCALL                                      0  $24     
        109        CONCAT                                           ~25     '+', $24
        110        ASSIGN_OP                                     8          !3, ~25
   45   111    > > RETURN                                                   !3
   46   112*     > RETURN                                                   null

End of function f

Function timeinwords:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 43) Position 1 = 8, Position 2 = 10
Branch analysis from position: 8
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 10
2 jumps found. (Code = 43) Position 1 = 12, Position 2 = 14
Branch analysis from position: 12
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 14
2 jumps found. (Code = 43) Position 1 = 16, Position 2 = 34
Branch analysis from position: 16
2 jumps found. (Code = 43) Position 1 = 18, Position 2 = 20
Branch analysis from position: 18
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 20
2 jumps found. (Code = 43) Position 1 = 26, Position 2 = 28
Branch analysis from position: 26
1 jumps found. (Code = 42) Position 1 = 29
Branch analysis from position: 29
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 28
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 34
2 jumps found. (Code = 43) Position 1 = 36, Position 2 = 42
Branch analysis from position: 36
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 42
2 jumps found. (Code = 43) Position 1 = 50, Position 2 = 52
Branch analysis from position: 50
1 jumps found. (Code = 42) Position 1 = 53
Branch analysis from position: 53
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 52
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/KS1q4
function name:  timeInWords
number of ops:  62
compiled vars:  !0 = $h, !1 = $m, !2 = $hstr, !3 = $mtmp
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   48     0  E >   RECV                                             !0      
          1        RECV                                             !1      
   49     2        INIT_FCALL                                               'f'
          3        SEND_VAR                                                 !0
          4        DO_FCALL                                      0  $4      
          5        ASSIGN                                                   !2, $4
   51     6        IS_EQUAL                                                 !1, 0
          7      > JMPZ                                                     ~6, ->10
   52     8    >   CONCAT                                           ~7      !2, '+o%27+clock'
          9      > RETURN                                                   ~7
   55    10    >   IS_EQUAL                                                 !1, 30
         11      > JMPZ                                                     ~8, ->14
   56    12    >   CONCAT                                           ~9      'half+past+', !2
         13      > RETURN                                                   ~9
   59    14    >   IS_SMALLER                                               !1, 30
         15      > JMPZ                                                     ~10, ->34
   60    16    >   IS_EQUAL                                                 !1, 15
         17      > JMPZ                                                     ~11, ->20
   61    18    >   CONCAT                                           ~12     'quarter+past+', !2
         19      > RETURN                                                   ~12
   64    20    >   INIT_FCALL                                               'f'
         21        SEND_VAR                                                 !1
         22        DO_FCALL                                      0  $13     
         23        CONCAT                                           ~14     $13, '+minute'
         24        IS_SMALLER                                               0, !1
         25      > JMPZ                                                     ~15, ->28
         26    >   QM_ASSIGN                                        ~16     's'
         27      > JMP                                                      ->29
         28    >   QM_ASSIGN                                        ~16     ''
         29    >   CONCAT                                           ~17     ~14, ~16
         30        CONCAT                                           ~18     ~17, '+past+'
         31        CONCAT                                           ~19     ~18, !2
         32      > RETURN                                                   ~19
         33*       JMP                                                      ->61
   67    34    >   IS_EQUAL                                                 !1, 45
         35      > JMPZ                                                     ~20, ->42
   68    36    >   INIT_FCALL                                               'f'
         37        ADD                                              ~21     !0, 1
         38        SEND_VAL                                                 ~21
         39        DO_FCALL                                      0  $22     
         40        CONCAT                                           ~23     'quarter+to+', $22
         41      > RETURN                                                   ~23
   71    42    >   SUB                                              ~24     60, !1
         43        ASSIGN                                                   !3, ~24
   73    44        INIT_FCALL                                               'f'
         45        SEND_VAR                                                 !3
         46        DO_FCALL                                      0  $26     
         47        CONCAT                                           ~27     $26, '+minute'
         48        IS_SMALLER                                               0, !1
         49      > JMPZ                                                     ~28, ->52
         50    >   QM_ASSIGN                                        ~29     's'
         51      > JMP                                                      ->53
         52    >   QM_ASSIGN                                        ~29     ''
         53    >   CONCAT                                           ~30     ~27, ~29
         54        CONCAT                                           ~31     ~30, '+to+'
         55        INIT_FCALL                                               'f'
         56        ADD                                              ~32     !0, 1
         57        SEND_VAL                                                 ~32
         58        DO_FCALL                                      0  $33     
         59        CONCAT                                           ~34     ~31, $33
         60      > RETURN                                                   ~34
   75    61*     > RETURN                                                   null

End of function timeinwords

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
178.99 ms | 1419 KiB | 21 Q