3v4l.org

run code in 300+ PHP versions simultaneously
<?php $from = new \DateTimeImmutable('2025-02-12 23:09:01'); $to = new \DateTimeImmutable('2025-02-24 06:00:00'); $h = (int) (($to->getTimestamp() - $from->getTimestamp()) / 3600); var_dump($h); $h = $from->diff($to); var_dump($h); return; class Polygon { public function __construct( public \DateTimeImmutable $time, ) { } public function isOutdated(\DateTimeImmutable $datetime): bool { return null !== $this->time && $this->time->getTimestamp() < $datetime->getTimestamp(); } } //$zone = new Polygon(time: new \DateTimeImmutable('2025-01-02 08:00:00')); $zone = null; var_dump($zone?->isOutdated(new \DateTimeImmutable('2025-02-02 08:00:00'))); if ($zone?->isOutdated(new \DateTimeImmutable('2025-02-02 08:00:00'))) { var_dump('true'); } return; $events = [ 'zone' => 'A', 'berth' => 'B', 'port' => 'C', 'anchorage' => 'D', 'shipyard' => 'E', 'sea' => 'F', 'foo' => 'G', ]; $lastEvents = array_slice($events, -6, 6, true); var_dump($lastEvents); return; $offset = 10; $limit = 10; var_dump(floor($offset / $limit) +1.0); $offset = 20; $limit = 10; var_dump(floor($offset / $limit) +1); $offset = 21; $limit = 10; var_dump(floor($offset / $limit) +1); $offset = 26; $limit = 10; var_dump(floor($offset / $limit) +1); return; $offset = 0; $limit = 10; var_dump(0 >= $offset || 0 >= $limit); $offset = 10; $limit = 10; var_dump(0 >= $offset || 0 >= $limit); $offset = 10; $limit = 0; var_dump(0 >= $offset || 0 >= $limit); return; $handled = []; $handled[123][] = 'a'; $handled[123][] = 'b'; var_dump($handled); $handled = true; var_dump(true || $handled); var_dump(false || $handled); $handled = false; var_dump(true || $handled); var_dump(false || $handled); return; $buffer = ['foo', 'abcd' , 'bar']; var_dump($buffer); $raws = array_values(array_filter($buffer, function ($str) { return strlen($str) < 4; })); var_dump($raws); $raws = array_reverse($raws); var_dump($raws); if (empty($raws)) { var_dump('empty'); return; } var_dump('not empty'); return; use App\Entity\SpeedEvent as RawEvent; use Symfony\Component\Uid\UuidV7; $firstPoint = [141.10258333, 38.24724167]; $lastPoint = [141.05860833333332, 38.26604833333333]; $point1 = \geoPHP::load("POINT($firstPoint[0] $firstPoint[1])", 'wkt'); $point2 = \geoPHP::load("POINT($lastPoint[0] $lastPoint[1])", 'wkt'); $distance = $point1->distance($point2); var_dump($distance); //var_dump(UuidV7::fromString('0188dee2-90cc-70d7-8789-fd2962e36116')->getDateTime()); /* var_dump(deg2rad(60)); var_dump(deg2rad(80)); var_dump(deg2rad(59)); $sumY = 0; $sumY += sin(deg2rad(60)); $sumY += sin(deg2rad(80)); $sumY += sin(deg2rad(59)); $sumY = $sumY/3; var_dump($sumY); $sumX = 0; $sumX += cos(deg2rad(60)); $sumX += cos(deg2rad(80)); $sumX += cos(deg2rad(59)); $sumX = $sumX/3; var_dump($sumX); var_dump(atan2($sumY, $sumX)); var_dump(rad2deg(atan2($sumY, $sumX))); */ //var_dump(null <= new \DateTimeImmutable()); /* for ($i=4; $i<=3841; $i++) { var_dump(sprintf('=SI(ESTNA(RECHERCHEV(C%s;\'check 2024-07-11\'!B4:B1542;1;FAUX)); "No"; "Yes")', $i)); } */ $origin = new DateTimeImmutable('2009-10-11 08:00:00'); $target = new DateTimeImmutable('2010-10-13 12:10:00'); $interval = $origin->diff($target); var_dump($interval->format('%R%a days')); var_dump($interval->format('%R%I minutes')); var_dump($interval->format('%R%h hours'));
Output for 8.2.0 - 8.2.29, 8.3.0 - 8.3.28, 8.4.1 - 8.4.15, 8.5.0
int(270) object(DateInterval)#3 (10) { ["y"]=> int(0) ["m"]=> int(0) ["d"]=> int(11) ["h"]=> int(6) ["i"]=> int(50) ["s"]=> int(59) ["f"]=> float(0) ["invert"]=> int(0) ["days"]=> int(11) ["from_string"]=> bool(false) }
Output for 8.1.32
int(270) object(DateInterval)#3 (16) { ["y"]=> int(0) ["m"]=> int(0) ["d"]=> int(11) ["h"]=> int(6) ["i"]=> int(50) ["s"]=> int(59) ["f"]=> float(0) ["weekday"]=> int(0) ["weekday_behavior"]=> int(0) ["first_last_day_of"]=> int(0) ["invert"]=> int(0) ["days"]=> int(11) ["special_type"]=> int(0) ["special_amount"]=> int(0) ["have_weekday_relative"]=> int(0) ["have_special_relative"]=> int(0) }

preferences:
67.01 ms | 408 KiB | 5 Q