3v4l.org

run code in 300+ PHP versions simultaneously
<?php function getDaysInWeek ($weekNumber, $year) { // Count from '0104' because January 4th is always in week 1 // (according to ISO 8601). $time = strtotime($year . '0104 +' . ($weekNumber - 1) . ' weeks'); // Get the time of the first day of the week $mondayTime = strtotime('-' . (date('w', $time) + 1) . ' days', $time); // Get the times of days 0 -> 6 $dayTimes = array (); for ($i = 0; $i < 5; ++$i) { $dayTimes[] = strtotime('+' . $i . ' days', $mondayTime); } // Return timestamps for mon-sun. return $dayTimes; } echo "working days in the 53th week from 2015". "<br>"; setlocale(LC_ALL, 'nl_NL'); $werkdagen = getDaysInWeek("53", "2015"); echo (strftime('%d-%m-%Y', $werkdagen[0])) . "<br>"; echo (strftime('%d-%m-%Y', $werkdagen[1])) . "<br>"; echo (strftime('%d-%m-%Y', $werkdagen[2])) . "<br>"; echo (strftime('%d-%m-%Y', $werkdagen[3])) . "<br>"; echo (strftime('%d-%m-%Y', $werkdagen[4])) . "<br>"; echo "<br>"; echo "working days in the 1st week from 2016". "<br>"; $werkdagen = getDaysInWeek("1", "2016"); echo (strftime('%d-%m-%Y', $werkdagen[0])) . "<br>"; echo (strftime('%d-%m-%Y', $werkdagen[1])) . "<br>"; echo (strftime('%d-%m-%Y', $werkdagen[2])) . "<br>"; echo (strftime('%d-%m-%Y', $werkdagen[3])) . "<br>"; echo (strftime('%d-%m-%Y', $werkdagen[4])) . "<br>"; echo "<br>"; ?>
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/QTvgN
function name:  (null)
number of ops:  89
compiled vars:  !0 = $werkdagen
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   18     0  E >   ECHO                                                     'working+days+in+the+53th+week+from+2015%3Cbr%3E'
   19     1        INIT_FCALL                                               'setlocale'
          2        SEND_VAL                                                 6
          3        SEND_VAL                                                 'nl_NL'
          4        DO_ICALL                                                 
   20     5        INIT_FCALL                                               'getdaysinweek'
          6        SEND_VAL                                                 '53'
          7        SEND_VAL                                                 '2015'
          8        DO_FCALL                                      0  $2      
          9        ASSIGN                                                   !0, $2
   21    10        INIT_FCALL                                               'strftime'
         11        SEND_VAL                                                 '%25d-%25m-%25Y'
         12        FETCH_DIM_R                                      ~4      !0, 0
         13        SEND_VAL                                                 ~4
         14        DO_ICALL                                         $5      
         15        CONCAT                                           ~6      $5, '%3Cbr%3E'
         16        ECHO                                                     ~6
   22    17        INIT_FCALL                                               'strftime'
         18        SEND_VAL                                                 '%25d-%25m-%25Y'
         19        FETCH_DIM_R                                      ~7      !0, 1
         20        SEND_VAL                                                 ~7
         21        DO_ICALL                                         $8      
         22        CONCAT                                           ~9      $8, '%3Cbr%3E'
         23        ECHO                                                     ~9
   23    24        INIT_FCALL                                               'strftime'
         25        SEND_VAL                                                 '%25d-%25m-%25Y'
         26        FETCH_DIM_R                                      ~10     !0, 2
         27        SEND_VAL                                                 ~10
         28        DO_ICALL                                         $11     
         29        CONCAT                                           ~12     $11, '%3Cbr%3E'
         30        ECHO                                                     ~12
   24    31        INIT_FCALL                                               'strftime'
         32        SEND_VAL                                                 '%25d-%25m-%25Y'
         33        FETCH_DIM_R                                      ~13     !0, 3
         34        SEND_VAL                                                 ~13
         35        DO_ICALL                                         $14     
         36        CONCAT                                           ~15     $14, '%3Cbr%3E'
         37        ECHO                                                     ~15
   25    38        INIT_FCALL                                               'strftime'
         39        SEND_VAL                                                 '%25d-%25m-%25Y'
         40        FETCH_DIM_R                                      ~16     !0, 4
         41        SEND_VAL                                                 ~16
         42        DO_ICALL                                         $17     
         43        CONCAT                                           ~18     $17, '%3Cbr%3E'
         44        ECHO                                                     ~18
   26    45        ECHO                                                     '%3Cbr%3E'
   27    46        ECHO                                                     'working+days+in+the+1st+week+from+2016%3Cbr%3E'
   28    47        INIT_FCALL                                               'getdaysinweek'
         48        SEND_VAL                                                 '1'
         49        SEND_VAL                                                 '2016'
         50        DO_FCALL                                      0  $19     
         51        ASSIGN                                                   !0, $19
   29    52        INIT_FCALL                                               'strftime'
         53        SEND_VAL                                                 '%25d-%25m-%25Y'
         54        FETCH_DIM_R                                      ~21     !0, 0
         55        SEND_VAL                                                 ~21
         56        DO_ICALL                                         $22     
         57        CONCAT                                           ~23     $22, '%3Cbr%3E'
         58        ECHO                                                     ~23
   30    59        INIT_FCALL                                               'strftime'
         60        SEND_VAL                                                 '%25d-%25m-%25Y'
         61        FETCH_DIM_R                                      ~24     !0, 1
         62        SEND_VAL                                                 ~24
         63        DO_ICALL                                         $25     
         64        CONCAT                                           ~26     $25, '%3Cbr%3E'
         65        ECHO                                                     ~26
   31    66        INIT_FCALL                                               'strftime'
         67        SEND_VAL                                                 '%25d-%25m-%25Y'
         68        FETCH_DIM_R                                      ~27     !0, 2
         69        SEND_VAL                                                 ~27
         70        DO_ICALL                                         $28     
         71        CONCAT                                           ~29     $28, '%3Cbr%3E'
         72        ECHO                                                     ~29
   32    73        INIT_FCALL                                               'strftime'
         74        SEND_VAL                                                 '%25d-%25m-%25Y'
         75        FETCH_DIM_R                                      ~30     !0, 3
         76        SEND_VAL                                                 ~30
         77        DO_ICALL                                         $31     
         78        CONCAT                                           ~32     $31, '%3Cbr%3E'
         79        ECHO                                                     ~32
   33    80        INIT_FCALL                                               'strftime'
         81        SEND_VAL                                                 '%25d-%25m-%25Y'
         82        FETCH_DIM_R                                      ~33     !0, 4
         83        SEND_VAL                                                 ~33
         84        DO_ICALL                                         $34     
         85        CONCAT                                           ~35     $34, '%3Cbr%3E'
         86        ECHO                                                     ~35
   34    87        ECHO                                                     '%3Cbr%3E'
   37    88      > RETURN                                                   1

Function getdaysinweek:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 42) Position 1 = 34
Branch analysis from position: 34
2 jumps found. (Code = 44) Position 1 = 36, Position 2 = 25
Branch analysis from position: 36
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 25
2 jumps found. (Code = 44) Position 1 = 36, Position 2 = 25
Branch analysis from position: 36
Branch analysis from position: 25
filename:       /in/QTvgN
function name:  getDaysInWeek
number of ops:  38
compiled vars:  !0 = $weekNumber, !1 = $year, !2 = $time, !3 = $mondayTime, !4 = $dayTimes, !5 = $i
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    2     0  E >   RECV                                             !0      
          1        RECV                                             !1      
    5     2        INIT_FCALL                                               'strtotime'
          3        CONCAT                                           ~6      !1, '0104+%2B'
          4        SUB                                              ~7      !0, 1
          5        CONCAT                                           ~8      ~6, ~7
          6        CONCAT                                           ~9      ~8, '+weeks'
          7        SEND_VAL                                                 ~9
          8        DO_ICALL                                         $10     
          9        ASSIGN                                                   !2, $10
    7    10        INIT_FCALL                                               'strtotime'
         11        INIT_FCALL                                               'date'
         12        SEND_VAL                                                 'w'
         13        SEND_VAR                                                 !2
         14        DO_ICALL                                         $12     
         15        ADD                                              ~13     $12, 1
         16        CONCAT                                           ~14     '-', ~13
         17        CONCAT                                           ~15     ~14, '+days'
         18        SEND_VAL                                                 ~15
         19        SEND_VAR                                                 !2
         20        DO_ICALL                                         $16     
         21        ASSIGN                                                   !3, $16
    9    22        ASSIGN                                                   !4, <array>
   10    23        ASSIGN                                                   !5, 0
         24      > JMP                                                      ->34
   11    25    >   INIT_FCALL                                               'strtotime'
         26        CONCAT                                           ~21     '%2B', !5
         27        CONCAT                                           ~22     ~21, '+days'
         28        SEND_VAL                                                 ~22
         29        SEND_VAR                                                 !3
         30        DO_ICALL                                         $23     
         31        ASSIGN_DIM                                               !4
         32        OP_DATA                                                  $23
   10    33        PRE_INC                                                  !5
         34    >   IS_SMALLER                                               !5, 5
         35      > JMPNZ                                                    ~25, ->25
   14    36    > > RETURN                                                   !4
   15    37*     > RETURN                                                   null

End of function getdaysinweek

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
151.48 ms | 1407 KiB | 23 Q