3v4l.org

run code in 300+ PHP versions simultaneously
<?php function weeks_in_month($month, $year) { $startDate = new DateTime(); $startDate->setDate($year, $month, 1); $loopDate = $startDate; $week = 1; for($i = $startDate->format('d'); $i <= cal_days_in_month(CAL_GREGORIAN, $month, $year); $i++) { if($loopDate->format('w') % 7 == 0) { $week++; } $loopDate->modify('+1 day'); } return $week; } echo '<p>Jan '.weeks_in_month(1, 2014).'</p>'; echo '<p>Feb '.weeks_in_month(2, 2014).'</p>'; echo '<p>Mar '.weeks_in_month(3, 2014).'</p>'; echo '<p>Apr '.weeks_in_month(4, 2014).'</p>'; echo '<p>May '.weeks_in_month(5, 2014).'</p>'; echo '<p>Jun '.weeks_in_month(6, 2014).'</p>'; echo '<p>Jul '.weeks_in_month(7, 2014).'</p>'; echo '<p>Aug '.weeks_in_month(8, 2014).'</p>'; echo '<p>Sep '.weeks_in_month(9, 2014).'</p>'; echo '<p>Oct '.weeks_in_month(10, 2014).'</p>'; echo '<p>Nov '.weeks_in_month(11, 2014).'</p>'; echo '<p>Dec '.weeks_in_month(12, 2014).'</p>';
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/9Jjp7
function name:  (null)
number of ops:  85
compiled vars:  none
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   22     0  E >   INIT_FCALL                                               'weeks_in_month'
          1        SEND_VAL                                                 1
          2        SEND_VAL                                                 2014
          3        DO_FCALL                                      0  $0      
          4        CONCAT                                           ~1      '%3Cp%3EJan+', $0
          5        CONCAT                                           ~2      ~1, '%3C%2Fp%3E'
          6        ECHO                                                     ~2
   23     7        INIT_FCALL                                               'weeks_in_month'
          8        SEND_VAL                                                 2
          9        SEND_VAL                                                 2014
         10        DO_FCALL                                      0  $3      
         11        CONCAT                                           ~4      '%3Cp%3EFeb+', $3
         12        CONCAT                                           ~5      ~4, '%3C%2Fp%3E'
         13        ECHO                                                     ~5
   24    14        INIT_FCALL                                               'weeks_in_month'
         15        SEND_VAL                                                 3
         16        SEND_VAL                                                 2014
         17        DO_FCALL                                      0  $6      
         18        CONCAT                                           ~7      '%3Cp%3EMar+', $6
         19        CONCAT                                           ~8      ~7, '%3C%2Fp%3E'
         20        ECHO                                                     ~8
   25    21        INIT_FCALL                                               'weeks_in_month'
         22        SEND_VAL                                                 4
         23        SEND_VAL                                                 2014
         24        DO_FCALL                                      0  $9      
         25        CONCAT                                           ~10     '%3Cp%3EApr+', $9
         26        CONCAT                                           ~11     ~10, '%3C%2Fp%3E'
         27        ECHO                                                     ~11
   26    28        INIT_FCALL                                               'weeks_in_month'
         29        SEND_VAL                                                 5
         30        SEND_VAL                                                 2014
         31        DO_FCALL                                      0  $12     
         32        CONCAT                                           ~13     '%3Cp%3EMay+', $12
         33        CONCAT                                           ~14     ~13, '%3C%2Fp%3E'
         34        ECHO                                                     ~14
   27    35        INIT_FCALL                                               'weeks_in_month'
         36        SEND_VAL                                                 6
         37        SEND_VAL                                                 2014
         38        DO_FCALL                                      0  $15     
         39        CONCAT                                           ~16     '%3Cp%3EJun+', $15
         40        CONCAT                                           ~17     ~16, '%3C%2Fp%3E'
         41        ECHO                                                     ~17
   28    42        INIT_FCALL                                               'weeks_in_month'
         43        SEND_VAL                                                 7
         44        SEND_VAL                                                 2014
         45        DO_FCALL                                      0  $18     
         46        CONCAT                                           ~19     '%3Cp%3EJul+', $18
         47        CONCAT                                           ~20     ~19, '%3C%2Fp%3E'
         48        ECHO                                                     ~20
   29    49        INIT_FCALL                                               'weeks_in_month'
         50        SEND_VAL                                                 8
         51        SEND_VAL                                                 2014
         52        DO_FCALL                                      0  $21     
         53        CONCAT                                           ~22     '%3Cp%3EAug+', $21
         54        CONCAT                                           ~23     ~22, '%3C%2Fp%3E'
         55        ECHO                                                     ~23
   30    56        INIT_FCALL                                               'weeks_in_month'
         57        SEND_VAL                                                 9
         58        SEND_VAL                                                 2014
         59        DO_FCALL                                      0  $24     
         60        CONCAT                                           ~25     '%3Cp%3ESep+', $24
         61        CONCAT                                           ~26     ~25, '%3C%2Fp%3E'
         62        ECHO                                                     ~26
   31    63        INIT_FCALL                                               'weeks_in_month'
         64        SEND_VAL                                                 10
         65        SEND_VAL                                                 2014
         66        DO_FCALL                                      0  $27     
         67        CONCAT                                           ~28     '%3Cp%3EOct+', $27
         68        CONCAT                                           ~29     ~28, '%3C%2Fp%3E'
         69        ECHO                                                     ~29
   32    70        INIT_FCALL                                               'weeks_in_month'
         71        SEND_VAL                                                 11
         72        SEND_VAL                                                 2014
         73        DO_FCALL                                      0  $30     
         74        CONCAT                                           ~31     '%3Cp%3ENov+', $30
         75        CONCAT                                           ~32     ~31, '%3C%2Fp%3E'
         76        ECHO                                                     ~32
   33    77        INIT_FCALL                                               'weeks_in_month'
         78        SEND_VAL                                                 12
         79        SEND_VAL                                                 2014
         80        DO_FCALL                                      0  $33     
         81        CONCAT                                           ~34     '%3Cp%3EDec+', $33
         82        CONCAT                                           ~35     ~34, '%3C%2Fp%3E'
         83        ECHO                                                     ~35
         84      > RETURN                                                   1

Function weeks_in_month:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 42) Position 1 = 28
Branch analysis from position: 28
2 jumps found. (Code = 44) Position 1 = 36, Position 2 = 17
Branch analysis from position: 36
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 17
2 jumps found. (Code = 43) Position 1 = 23, Position 2 = 24
Branch analysis from position: 23
2 jumps found. (Code = 44) Position 1 = 36, Position 2 = 17
Branch analysis from position: 36
Branch analysis from position: 17
Branch analysis from position: 24
filename:       /in/9Jjp7
function name:  weeks_in_month
number of ops:  38
compiled vars:  !0 = $month, !1 = $year, !2 = $startDate, !3 = $loopDate, !4 = $week, !5 = $i
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    2     0  E >   RECV                                             !0      
          1        RECV                                             !1      
    4     2        NEW                                              $6      'DateTime'
          3        DO_FCALL                                      0          
          4        ASSIGN                                                   !2, $6
    5     5        INIT_METHOD_CALL                                         !2, 'setDate'
          6        SEND_VAR_EX                                              !1
          7        SEND_VAR_EX                                              !0
          8        SEND_VAL_EX                                              1
          9        DO_FCALL                                      0          
    7    10        ASSIGN                                                   !3, !2
    8    11        ASSIGN                                                   !4, 1
    9    12        INIT_METHOD_CALL                                         !2, 'format'
         13        SEND_VAL_EX                                              'd'
         14        DO_FCALL                                      0  $12     
         15        ASSIGN                                                   !5, $12
         16      > JMP                                                      ->28
   11    17    >   INIT_METHOD_CALL                                         !3, 'format'
         18        SEND_VAL_EX                                              'w'
         19        DO_FCALL                                      0  $14     
         20        MOD                                              ~15     $14, 7
         21        IS_EQUAL                                                 ~15, 0
         22      > JMPZ                                                     ~16, ->24
   13    23    >   PRE_INC                                                  !4
   16    24    >   INIT_METHOD_CALL                                         !3, 'modify'
         25        SEND_VAL_EX                                              '%2B1+day'
         26        DO_FCALL                                      0          
    9    27        PRE_INC                                                  !5
         28    >   INIT_FCALL_BY_NAME                                       'cal_days_in_month'
         29        FETCH_CONSTANT                                   ~20     'CAL_GREGORIAN'
         30        SEND_VAL_EX                                              ~20
         31        SEND_VAR_EX                                              !0
         32        SEND_VAR_EX                                              !1
         33        DO_FCALL                                      0  $21     
         34        IS_SMALLER_OR_EQUAL                                      !5, $21
         35      > JMPNZ                                                    ~22, ->17
   19    36    > > RETURN                                                   !4
   20    37*     > RETURN                                                   null

End of function weeks_in_month

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
153.8 ms | 1411 KiB | 25 Q