3v4l.org

run code in 300+ PHP versions simultaneously
<?php function shift_datetimeobject($begin1, $end1, $begin2) { $dt_begin1 = new DateTime($begin1); $dt_end1 = new DateTime($end1); $span = $dt_begin1->diff($dt_end1); $dt_return = new DateTime($begin2); return array($dt_return->add($span), $span); } function shift_timestamp($begin1, $end1, $begin2) { $dt_begin1 = new DateTime($begin1); $st_begin1 = $dt_begin1->getTimestamp(); $dt_end1 = new DateTime($end1); $st_end1 = $dt_end1->getTimestamp(); $span = $st_end1 - $st_begin1; $dt_begin2 = new DateTime($begin2); $st_begin2 = $dt_begin2->getTimestamp(); $st_end2 = $st_begin2 + $span; $dt_end2 = new DateTime(); return $dt_end2->setTimestamp($st_end2); } $params = array( array('2012-05-07', '2012-06-01', '2012-05-21'), array('2012-06-11', '2012-07-13', '2012-06-18'), array('2012-06-25', '2012-07-27', '2012-07-02'), array('2012-07-09', '2012-07-27', '2012-07-16'), ); foreach ($params as $p) { $erg_object = shift_datetimeobject($p[0], $p[1], $p[2]); $erg_stamp = shift_timestamp($p[0], $p[1], $p[2]); printf("Params: %s, %s, %s\n", $p[0], $p[1], $p[2]); printf('$erg_stamp = %s' . "\n", $erg_stamp->format('Y-m-d')); printf('$erg_object[0] = %s' . "\n", $erg_object[0]->format('Y-m-d')); printf("span (object) = %s\n", $erg_object[1]->format('%a days %H:%I:%S')); if ($erg_object[0] == $erg_stamp) { echo "OK"; } else { echo "WRONG!"; } echo "\n\n"; }
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 77) Position 1 = 2, Position 2 = 61
Branch analysis from position: 2
2 jumps found. (Code = 78) Position 1 = 3, Position 2 = 61
Branch analysis from position: 3
2 jumps found. (Code = 43) Position 1 = 56, Position 2 = 58
Branch analysis from position: 56
1 jumps found. (Code = 42) Position 1 = 59
Branch analysis from position: 59
1 jumps found. (Code = 42) Position 1 = 2
Branch analysis from position: 2
Branch analysis from position: 58
1 jumps found. (Code = 42) Position 1 = 2
Branch analysis from position: 2
Branch analysis from position: 61
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 61
filename:       /in/FRsXA
function name:  (null)
number of ops:  63
compiled vars:  !0 = $params, !1 = $p, !2 = $erg_object, !3 = $erg_stamp
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   31     0  E >   ASSIGN                                                   !0, <array>
   37     1      > FE_RESET_R                                       $5      !0, ->61
          2    > > FE_FETCH_R                                               $5, !1, ->61
   38     3    >   INIT_FCALL                                               'shift_datetimeobject'
          4        FETCH_DIM_R                                      ~6      !1, 0
          5        SEND_VAL                                                 ~6
          6        FETCH_DIM_R                                      ~7      !1, 1
          7        SEND_VAL                                                 ~7
          8        FETCH_DIM_R                                      ~8      !1, 2
          9        SEND_VAL                                                 ~8
         10        DO_FCALL                                      0  $9      
         11        ASSIGN                                                   !2, $9
   39    12        INIT_FCALL                                               'shift_timestamp'
         13        FETCH_DIM_R                                      ~11     !1, 0
         14        SEND_VAL                                                 ~11
         15        FETCH_DIM_R                                      ~12     !1, 1
         16        SEND_VAL                                                 ~12
         17        FETCH_DIM_R                                      ~13     !1, 2
         18        SEND_VAL                                                 ~13
         19        DO_FCALL                                      0  $14     
         20        ASSIGN                                                   !3, $14
   40    21        INIT_FCALL                                               'printf'
         22        SEND_VAL                                                 'Params%3A+%25s%2C+%25s%2C+%25s%0A'
         23        FETCH_DIM_R                                      ~16     !1, 0
         24        SEND_VAL                                                 ~16
         25        FETCH_DIM_R                                      ~17     !1, 1
         26        SEND_VAL                                                 ~17
         27        FETCH_DIM_R                                      ~18     !1, 2
         28        SEND_VAL                                                 ~18
         29        DO_ICALL                                                 
   41    30        INIT_FCALL                                               'printf'
         31        SEND_VAL                                                 '%24erg_stamp+++++%3D+%25s%0A'
         32        INIT_METHOD_CALL                                         !3, 'format'
         33        SEND_VAL_EX                                              'Y-m-d'
         34        DO_FCALL                                      0  $20     
         35        SEND_VAR                                                 $20
         36        DO_ICALL                                                 
   42    37        INIT_FCALL                                               'printf'
         38        SEND_VAL                                                 '%24erg_object%5B0%5D+%3D+%25s%0A'
         39        FETCH_DIM_R                                      ~22     !2, 0
         40        INIT_METHOD_CALL                                         ~22, 'format'
         41        SEND_VAL_EX                                              'Y-m-d'
         42        DO_FCALL                                      0  $23     
         43        SEND_VAR                                                 $23
         44        DO_ICALL                                                 
   43    45        INIT_FCALL                                               'printf'
         46        SEND_VAL                                                 'span+%28object%29++%3D+%25s%0A'
         47        FETCH_DIM_R                                      ~25     !2, 1
         48        INIT_METHOD_CALL                                         ~25, 'format'
         49        SEND_VAL_EX                                              '%25a+days+%25H%3A%25I%3A%25S'
         50        DO_FCALL                                      0  $26     
         51        SEND_VAR                                                 $26
         52        DO_ICALL                                                 
   44    53        FETCH_DIM_R                                      ~28     !2, 0
         54        IS_EQUAL                                                 !3, ~28
         55      > JMPZ                                                     ~29, ->58
   45    56    >   ECHO                                                     'OK'
         57      > JMP                                                      ->59
   47    58    >   ECHO                                                     'WRONG%21'
   49    59    >   ECHO                                                     '%0A%0A'
   37    60      > JMP                                                      ->2
         61    >   FE_FREE                                                  $5
   50    62      > RETURN                                                   1

Function shift_datetimeobject:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/FRsXA
function name:  shift_datetimeobject
number of ops:  26
compiled vars:  !0 = $begin1, !1 = $end1, !2 = $begin2, !3 = $dt_begin1, !4 = $dt_end1, !5 = $span, !6 = $dt_return
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    3     0  E >   RECV                                             !0      
          1        RECV                                             !1      
          2        RECV                                             !2      
    5     3        NEW                                              $7      'DateTime'
          4        SEND_VAR_EX                                              !0
          5        DO_FCALL                                      0          
          6        ASSIGN                                                   !3, $7
    6     7        NEW                                              $10     'DateTime'
          8        SEND_VAR_EX                                              !1
          9        DO_FCALL                                      0          
         10        ASSIGN                                                   !4, $10
    8    11        INIT_METHOD_CALL                                         !3, 'diff'
         12        SEND_VAR_EX                                              !4
         13        DO_FCALL                                      0  $13     
         14        ASSIGN                                                   !5, $13
   10    15        NEW                                              $15     'DateTime'
         16        SEND_VAR_EX                                              !2
         17        DO_FCALL                                      0          
         18        ASSIGN                                                   !6, $15
   11    19        INIT_METHOD_CALL                                         !6, 'add'
         20        SEND_VAR_EX                                              !5
         21        DO_FCALL                                      0  $18     
         22        INIT_ARRAY                                       ~19     $18
         23        ADD_ARRAY_ELEMENT                                ~19     !5
         24      > RETURN                                                   ~19
   12    25*     > RETURN                                                   null

End of function shift_datetimeobject

Function shift_timestamp:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/FRsXA
function name:  shift_timestamp
number of ops:  36
compiled vars:  !0 = $begin1, !1 = $end1, !2 = $begin2, !3 = $dt_begin1, !4 = $st_begin1, !5 = $dt_end1, !6 = $st_end1, !7 = $span, !8 = $dt_begin2, !9 = $st_begin2, !10 = $st_end2, !11 = $dt_end2
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   13     0  E >   RECV                                             !0      
          1        RECV                                             !1      
          2        RECV                                             !2      
   15     3        NEW                                              $12     'DateTime'
          4        SEND_VAR_EX                                              !0
          5        DO_FCALL                                      0          
          6        ASSIGN                                                   !3, $12
   16     7        INIT_METHOD_CALL                                         !3, 'getTimestamp'
          8        DO_FCALL                                      0  $15     
          9        ASSIGN                                                   !4, $15
   18    10        NEW                                              $17     'DateTime'
         11        SEND_VAR_EX                                              !1
         12        DO_FCALL                                      0          
         13        ASSIGN                                                   !5, $17
   19    14        INIT_METHOD_CALL                                         !5, 'getTimestamp'
         15        DO_FCALL                                      0  $20     
         16        ASSIGN                                                   !6, $20
   21    17        SUB                                              ~22     !6, !4
         18        ASSIGN                                                   !7, ~22
   23    19        NEW                                              $24     'DateTime'
         20        SEND_VAR_EX                                              !2
         21        DO_FCALL                                      0          
         22        ASSIGN                                                   !8, $24
   24    23        INIT_METHOD_CALL                                         !8, 'getTimestamp'
         24        DO_FCALL                                      0  $27     
         25        ASSIGN                                                   !9, $27
   26    26        ADD                                              ~29     !9, !7
         27        ASSIGN                                                   !10, ~29
   27    28        NEW                                              $31     'DateTime'
         29        DO_FCALL                                      0          
         30        ASSIGN                                                   !11, $31
   28    31        INIT_METHOD_CALL                                         !11, 'setTimestamp'
         32        SEND_VAR_EX                                              !10
         33        DO_FCALL                                      0  $34     
         34      > RETURN                                                   $34
   29    35*     > RETURN                                                   null

End of function shift_timestamp

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
139.76 ms | 1415 KiB | 17 Q