3v4l.org

run code in 500+ PHP versions simultaneously
<?php class PayDay { public function __construct($Ymd = null) { $this->date = $Ymd ?: date("Y-m-d"); $this->holiday_calendar = [ (object)["holiday" => "New Year's Day", "holidayDate" => "2018-01-01"], (object)["holiday" => "Republic Day", "holidayDate" => "2018-01-26"], (object)["holiday" => "Holi", "holidayDate" => "2018-03-02"] ]; $this->payroll_days_list = [ (object)["payrollDay" => "Mon", "isPayrollDay" => "Y"], (object)["payrollDay" => "Tue", "isPayrollDay" => "Y"], (object)["payrollDay" => "Wed", "isPayrollDay" => "Y"], (object)["payrollDay" => "Thu", "isPayrollDay" => "Y"], (object)["payrollDay" => "Fri", "isPayrollDay" => "Y"], (object)["payrollDay" => "Sat", "isPayrollDay" => "N"], (object)["payrollDay" => "Sun", "isPayrollDay" => "N"] ]; echo "Starting Date: ",$this->date,"\n"; } public function getPayDate() { $hc_match = false; foreach (array_reverse($this->holiday_calendar) as $hc) { if ($hc->holidayDate == $this->date) { $hc_match = true; //echo "Avoided: ",$hc->holiday,"\n"; $this->loseOneDay(); //echo "New Date: ",$this->date,"\n"; } elseif ($hc_match) { break; } } $pdl_match = false; foreach (array_reverse($this->payroll_days_list) as $pdl) { if ($pdl->payrollDay == date("D", strtotime($this->date)) && $pdl->isPayrollDay == "N") { $pdl_match = true; //echo "Avoided: ",$pdl->payrollDay,"\n"; $this->loseOneDay(); //echo "New Date: ",$this->date,"\n"; } elseif ($pdl_match) { break; } } //echo $this->date; if ($hc_match || $pdl_match) { //echo "\tRECURSE\n"; $this->getPayDate(); } return $this->date; } public function loseOneDay(){ return $this->date = date("Y-m-d", strtotime($this->date." -1 day")); } } $date = new PayDay("2018-03-04"); echo "Adjusted Date: ",$date->getPayDate();
Output for 8.2.0 - 8.2.30, 8.3.0 - 8.3.30, 8.4.1 - 8.4.18, 8.5.0 - 8.5.3
Deprecated: Creation of dynamic property PayDay::$date is deprecated in /in/amkvS on line 5 Deprecated: Creation of dynamic property PayDay::$holiday_calendar is deprecated in /in/amkvS on line 7 Deprecated: Creation of dynamic property PayDay::$payroll_days_list is deprecated in /in/amkvS on line 13 Starting Date: 2018-03-04 Adjusted Date: 2018-03-01
Output for 7.1.0 - 7.1.20, 7.2.0 - 7.2.33, 7.3.16 - 7.3.33, 7.4.0 - 7.4.33, 8.0.0 - 8.0.30, 8.1.0 - 8.1.34
Starting Date: 2018-03-04 Adjusted Date: 2018-03-01

preferences:
114.13 ms | 1420 KiB | 4 Q