3v4l.org

run code in 300+ PHP versions simultaneously
<?php //-------------------------HOLIDAY-------------- function easter_date($year) { return strtotime('2019-04-19'); } function day_holiday($ano = null){ if ($ano === null){ $ano = intval(date('Y')); } $pascoa = easter_date($ano); $dia_pascoa = date('j', $pascoa); $mes_pascoa = date('n', $pascoa); $ano_pascoa = date('Y', $pascoa); $holiday = array( mktime(0, 0, 0, 1, 1, $ano), mktime(0, 0, 0, 4, 21, $ano), mktime(0, 0, 0, 5, 1, $ano), mktime(0, 0, 0, 9, 7, $ano), mktime(0, 0, 0, 10, 12, $ano), mktime(0, 0, 0, 11, 2, $ano), mktime(0, 0, 0, 11, 15, $ano), mktime(0, 0, 0, 12, 25, $ano), mktime(0, 0, 0, $mes_pascoa, $dia_pascoa - 48, $ano_pascoa), mktime(0, 0, 0, $mes_pascoa, $dia_pascoa - 47, $ano_pascoa), mktime(0, 0, 0, $mes_pascoa, $dia_pascoa - 2 , $ano_pascoa), mktime(0, 0, 0, $mes_pascoa, $dia_pascoa , $ano_pascoa), mktime(0, 0, 0, $mes_pascoa, $dia_pascoa + 60, $ano_pascoa), ); sort($holiday); return $holiday; } //-------------------------HOLIDAY-------------- //-------------SCRIPT------------- function formatDate($startDate) { $holiday = day_holiday(); $start = date_create_from_format('d-m-Y H:i:s', $startDate . ' 00:00:00'); do { $ts = (int)$start->format('U'); $dow = (int)$start->format('w'); if (!in_array($ts, $holiday) && $dow != 0 && $dow != 6) break; $start->modify('+1 day'); } while (true); return $start->format('d-m-Y'); } $sales = "19-04-2019"; //19 and Saturday is jumping for Monday 21 second /* These are some holidays. 01-01-2019 04-03-2019 05-03-2019 19-04-2019 21-04-2019 21-04-2019 01-05-2019 */ echo "Start: ",date("d-m-Y", strtotime($sales)),"<br />"; echo formatDate('19-01-2019') . "\n"; echo formatDate('19-04-2019') . "\n";
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/maUsU
function name:  (null)
number of ops:  22
compiled vars:  !0 = $sales
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   51     0  E >   ASSIGN                                                   !0, '19-04-2019'
   62     1        ECHO                                                     'Start%3A+'
          2        INIT_FCALL                                               'date'
          3        SEND_VAL                                                 'd-m-Y'
          4        INIT_FCALL                                               'strtotime'
          5        SEND_VAR                                                 !0
          6        DO_ICALL                                         $2      
          7        SEND_VAR                                                 $2
          8        DO_ICALL                                         $3      
          9        ECHO                                                     $3
         10        ECHO                                                     '%3Cbr+%2F%3E'
   64    11        INIT_FCALL                                               'formatdate'
         12        SEND_VAL                                                 '19-01-2019'
         13        DO_FCALL                                      0  $4      
         14        CONCAT                                           ~5      $4, '%0A'
         15        ECHO                                                     ~5
   65    16        INIT_FCALL                                               'formatdate'
         17        SEND_VAL                                                 '19-04-2019'
         18        DO_FCALL                                      0  $6      
         19        CONCAT                                           ~7      $6, '%0A'
         20        ECHO                                                     ~7
         21      > RETURN                                                   1

Function easter_date:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/maUsU
function name:  easter_date
number of ops:  6
compiled vars:  !0 = $year
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    3     0  E >   RECV                                             !0      
    4     1        INIT_FCALL                                               'strtotime'
          2        SEND_VAL                                                 '2019-04-19'
          3        DO_ICALL                                         $1      
          4      > RETURN                                                   $1
    5     5*     > RETURN                                                   null

End of function easter_date

Function day_holiday:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 43) Position 1 = 3, Position 2 = 8
Branch analysis from position: 3
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 8
filename:       /in/maUsU
function name:  day_holiday
number of ops:  154
compiled vars:  !0 = $ano, !1 = $pascoa, !2 = $dia_pascoa, !3 = $mes_pascoa, !4 = $ano_pascoa, !5 = $holiday
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    6     0  E >   RECV_INIT                                        !0      null
    7     1        TYPE_CHECK                                    2          !0
          2      > JMPZ                                                     ~6, ->8
    8     3    >   INIT_FCALL                                               'date'
          4        SEND_VAL                                                 'Y'
          5        DO_ICALL                                         $7      
          6        CAST                                          4  ~8      $7
          7        ASSIGN                                                   !0, ~8
   10     8    >   INIT_FCALL                                               'easter_date'
          9        SEND_VAR                                                 !0
         10        DO_FCALL                                      0  $10     
         11        ASSIGN                                                   !1, $10
   11    12        INIT_FCALL                                               'date'
         13        SEND_VAL                                                 'j'
         14        SEND_VAR                                                 !1
         15        DO_ICALL                                         $12     
         16        ASSIGN                                                   !2, $12
   12    17        INIT_FCALL                                               'date'
         18        SEND_VAL                                                 'n'
         19        SEND_VAR                                                 !1
         20        DO_ICALL                                         $14     
         21        ASSIGN                                                   !3, $14
   13    22        INIT_FCALL                                               'date'
         23        SEND_VAL                                                 'Y'
         24        SEND_VAR                                                 !1
         25        DO_ICALL                                         $16     
         26        ASSIGN                                                   !4, $16
   16    27        INIT_FCALL                                               'mktime'
         28        SEND_VAL                                                 0
         29        SEND_VAL                                                 0
         30        SEND_VAL                                                 0
         31        SEND_VAL                                                 1
         32        SEND_VAL                                                 1
         33        SEND_VAR                                                 !0
         34        DO_ICALL                                         $18     
         35        INIT_ARRAY                                       ~19     $18
   17    36        INIT_FCALL                                               'mktime'
         37        SEND_VAL                                                 0
         38        SEND_VAL                                                 0
         39        SEND_VAL                                                 0
         40        SEND_VAL                                                 4
         41        SEND_VAL                                                 21
         42        SEND_VAR                                                 !0
         43        DO_ICALL                                         $20     
         44        ADD_ARRAY_ELEMENT                                ~19     $20
   18    45        INIT_FCALL                                               'mktime'
         46        SEND_VAL                                                 0
         47        SEND_VAL                                                 0
         48        SEND_VAL                                                 0
         49        SEND_VAL                                                 5
         50        SEND_VAL                                                 1
         51        SEND_VAR                                                 !0
         52        DO_ICALL                                         $21     
         53        ADD_ARRAY_ELEMENT                                ~19     $21
   19    54        INIT_FCALL                                               'mktime'
         55        SEND_VAL                                                 0
         56        SEND_VAL                                                 0
         57        SEND_VAL                                                 0
         58        SEND_VAL                                                 9
         59        SEND_VAL                                                 7
         60        SEND_VAR                                                 !0
         61        DO_ICALL                                         $22     
         62        ADD_ARRAY_ELEMENT                                ~19     $22
   20    63        INIT_FCALL                                               'mktime'
         64        SEND_VAL                                                 0
         65        SEND_VAL                                                 0
         66        SEND_VAL                                                 0
         67        SEND_VAL                                                 10
         68        SEND_VAL                                                 12
         69        SEND_VAR                                                 !0
         70        DO_ICALL                                         $23     
         71        ADD_ARRAY_ELEMENT                                ~19     $23
   21    72        INIT_FCALL                                               'mktime'
         73        SEND_VAL                                                 0
         74        SEND_VAL                                                 0
         75        SEND_VAL                                                 0
         76        SEND_VAL                                                 11
         77        SEND_VAL                                                 2
         78        SEND_VAR                                                 !0
         79        DO_ICALL                                         $24     
         80        ADD_ARRAY_ELEMENT                                ~19     $24
   22    81        INIT_FCALL                                               'mktime'
         82        SEND_VAL                                                 0
         83        SEND_VAL                                                 0
         84        SEND_VAL                                                 0
         85        SEND_VAL                                                 11
         86        SEND_VAL                                                 15
         87        SEND_VAR                                                 !0
         88        DO_ICALL                                         $25     
         89        ADD_ARRAY_ELEMENT                                ~19     $25
   23    90        INIT_FCALL                                               'mktime'
         91        SEND_VAL                                                 0
         92        SEND_VAL                                                 0
         93        SEND_VAL                                                 0
         94        SEND_VAL                                                 12
         95        SEND_VAL                                                 25
         96        SEND_VAR                                                 !0
         97        DO_ICALL                                         $26     
         98        ADD_ARRAY_ELEMENT                                ~19     $26
   25    99        INIT_FCALL                                               'mktime'
        100        SEND_VAL                                                 0
        101        SEND_VAL                                                 0
        102        SEND_VAL                                                 0
        103        SEND_VAR                                                 !3
        104        SUB                                              ~27     !2, 48
        105        SEND_VAL                                                 ~27
        106        SEND_VAR                                                 !4
        107        DO_ICALL                                         $28     
        108        ADD_ARRAY_ELEMENT                                ~19     $28
   26   109        INIT_FCALL                                               'mktime'
        110        SEND_VAL                                                 0
        111        SEND_VAL                                                 0
        112        SEND_VAL                                                 0
        113        SEND_VAR                                                 !3
        114        SUB                                              ~29     !2, 47
        115        SEND_VAL                                                 ~29
        116        SEND_VAR                                                 !4
        117        DO_ICALL                                         $30     
        118        ADD_ARRAY_ELEMENT                                ~19     $30
   27   119        INIT_FCALL                                               'mktime'
        120        SEND_VAL                                                 0
        121        SEND_VAL                                                 0
        122        SEND_VAL                                                 0
        123        SEND_VAR                                                 !3
        124        SUB                                              ~31     !2, 2
        125        SEND_VAL                                                 ~31
        126        SEND_VAR                                                 !4
        127        DO_ICALL                                         $32     
        128        ADD_ARRAY_ELEMENT                                ~19     $32
   28   129        INIT_FCALL                                               'mktime'
        130        SEND_VAL                                                 0
        131        SEND_VAL                                                 0
        132        SEND_VAL                                                 0
        133        SEND_VAR                                                 !3
        134        SEND_VAR                                                 !2
        135        SEND_VAR                                                 !4
        136        DO_ICALL                                         $33     
        137        ADD_ARRAY_ELEMENT                                ~19     $33
   29   138        INIT_FCALL                                               'mktime'
        139        SEND_VAL                                                 0
        140        SEND_VAL                                                 0
        141        SEND_VAL                                                 0
        142        SEND_VAR                                                 !3
        143        ADD                                              ~34     !2, 60
        144        SEND_VAL                                                 ~34
        145        SEND_VAR                                                 !4
        146        DO_ICALL                                         $35     
        147        ADD_ARRAY_ELEMENT                                ~19     $35
   15   148        ASSIGN                                                   !5, ~19
   31   149        INIT_FCALL                                               'sort'
        150        SEND_REF                                                 !5
        151        DO_ICALL                                                 
   32   152      > RETURN                                                   !5
   33   153*     > RETURN                                                   null

End of function day_holiday

Function formatdate:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 46) Position 1 = 26, Position 2 = 28
Branch analysis from position: 26
2 jumps found. (Code = 46) Position 1 = 29, Position 2 = 31
Branch analysis from position: 29
2 jumps found. (Code = 43) Position 1 = 32, Position 2 = 33
Branch analysis from position: 32
1 jumps found. (Code = 42) Position 1 = 37
Branch analysis from position: 37
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 33
2 jumps found. (Code = 44) Position 1 = 37, Position 2 = 10
Branch analysis from position: 37
Branch analysis from position: 10
Branch analysis from position: 31
Branch analysis from position: 28
filename:       /in/maUsU
function name:  formatDate
number of ops:  42
compiled vars:  !0 = $startDate, !1 = $holiday, !2 = $start, !3 = $ts, !4 = $dow
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   38     0  E >   RECV                                             !0      
   39     1        INIT_FCALL                                               'day_holiday'
          2        DO_FCALL                                      0  $5      
          3        ASSIGN                                                   !1, $5
   40     4        INIT_FCALL                                               'date_create_from_format'
          5        SEND_VAL                                                 'd-m-Y+H%3Ai%3As'
          6        CONCAT                                           ~7      !0, '+00%3A00%3A00'
          7        SEND_VAL                                                 ~7
          8        DO_ICALL                                         $8      
          9        ASSIGN                                                   !2, $8
   42    10    >   INIT_METHOD_CALL                                         !2, 'format'
         11        SEND_VAL_EX                                              'U'
         12        DO_FCALL                                      0  $10     
         13        CAST                                          4  ~11     $10
         14        ASSIGN                                                   !3, ~11
   43    15        INIT_METHOD_CALL                                         !2, 'format'
         16        SEND_VAL_EX                                              'w'
         17        DO_FCALL                                      0  $13     
         18        CAST                                          4  ~14     $13
         19        ASSIGN                                                   !4, ~14
   44    20        INIT_FCALL                                               'in_array'
         21        SEND_VAR                                                 !3
         22        SEND_VAR                                                 !1
         23        DO_ICALL                                         $16     
         24        BOOL_NOT                                         ~17     $16
         25      > JMPZ_EX                                          ~17     ~17, ->28
         26    >   IS_NOT_EQUAL                                     ~18     !4, 0
         27        BOOL                                             ~17     ~18
         28    > > JMPZ_EX                                          ~17     ~17, ->31
         29    >   IS_NOT_EQUAL                                     ~19     !4, 6
         30        BOOL                                             ~17     ~19
         31    > > JMPZ                                                     ~17, ->33
         32    > > JMP                                                      ->37
   45    33    >   INIT_METHOD_CALL                                         !2, 'modify'
         34        SEND_VAL_EX                                              '%2B1+day'
         35        DO_FCALL                                      0          
   47    36      > JMPNZ                                                    <true>, ->10
   48    37    >   INIT_METHOD_CALL                                         !2, 'format'
         38        SEND_VAL_EX                                              'd-m-Y'
         39        DO_FCALL                                      0  $21     
         40      > RETURN                                                   $21
   49    41*     > RETURN                                                   null

End of function formatdate

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
128.98 ms | 1040 KiB | 23 Q