3v4l.org

run code in 300+ PHP versions simultaneously
<?php $arr = [ // without first Dec, Jan and Jan lines: // all subsequent lines are the current year "Dec 23 21:37:56 hello", "Jan 12 02:08:23 hello", "Jan 16 17:34:33 hello", "Feb 4 12:21:09 hello", "Mar 19 17:07:26 hello", "Apr 1 00:00:03 hello", "Apr 12 23:07:39 hello", "May 21 04:09:34 hello", "Jun 7 23:34:56 hello", "Jul 1 14:45:34 hello", "Aug 13 11:37:23 hello", "Sep 29 07:36:03 hello", "Oct 30 09:01:00 hello", "Nov 10 11:00:03 hello", "Dec 25 21:47:51 hello" ]; var_export( array_reverse( preg_replace_callback( '/^[a-z]{3} +\d+ \d\d:\d\d:\d\d/i', function($m) { static $lastStamp = null; static $year = null; $year ??= date('Y'); $currentStamp = date('m d H:i:s', strtotime($m[0])); if ($currentStamp > ($lastStamp ?? $currentStamp)) { --$year; } $lastStamp = $currentStamp; return "$year $currentStamp"; }, array_reverse($arr) ) ) );

preferences:
23.93 ms | 408 KiB | 5 Q