3v4l.org

run code in 500+ PHP versions simultaneously
<?php $events = [ [ 'date' => '1st June', 'events' => [ [ 'location' => 'Venue A', 'name' => 'Pete', 'time' => '4.00pm' ], [ 'location' => 'Venue A', 'name' => 'John', 'time' => '4.30pm' ], [ 'location' => 'Venue B', 'name' => 'Chris', 'time' => '7.30pm' ], [ 'location' => 'Venue A', 'name' => 'Mark', 'time' => '8.00pm' ] ] ], [ 'date' => '2nd June', 'events' => [ [ 'location' => 'Venue B', 'name' => 'Fred', 'time' => '5.00pm' ], [ 'location' => 'Venue C', 'name' => 'Boris', 'time' => '6.00pm' ], [ 'location' => 'Venue A', 'name' => 'Rupert', 'time' => '7.00pm' ], [ 'location' => 'Venue A', 'name' => 'Davis', 'time' => '9.00pm' ] ] ] ]; $resultEvents = []; foreach ($events as ['date' => $date, 'events' => $dayEvents]) { $resultDayEvents = ['date' => $date, 'events' => []]; foreach ($dayEvents as ['location' => $location, 'name' => $name, 'time' => $time]) { $attendee = ['name' => $name, 'time' => $time]; if ($location === ($previousLocation ?? null)) { $resultDayEvents['events'][array_key_last($resultDayEvents['events'])]['attendees'][] = $attendee; } else { $resultDayEvents['events'][] = ['location' => $location, 'attendees' => [$attendee]]; } $previousLocation = $location; } $resultEvents[] = $resultDayEvents; } print_r($resultEvents);
Output for 7.3.0 - 7.3.33, 7.4.0 - 7.4.33, 8.0.0 - 8.0.30, 8.1.0 - 8.1.34, 8.2.0 - 8.2.34, 8.3.0 - 8.3.35, 8.4.1 - 8.4.26, 8.5.0 - 8.5.11
Array ( [0] => Array ( [date] => 1st June [events] => Array ( [0] => Array ( [location] => Venue A [attendees] => Array ( [0] => Array ( [name] => Pete [time] => 4.00pm ) [1] => Array ( [name] => John [time] => 4.30pm ) ) ) [1] => Array ( [location] => Venue B [attendees] => Array ( [0] => Array ( [name] => Chris [time] => 7.30pm ) ) ) [2] => Array ( [location] => Venue A [attendees] => Array ( [0] => Array ( [name] => Mark [time] => 8.00pm ) ) ) ) ) [1] => Array ( [date] => 2nd June [events] => Array ( [0] => Array ( [location] => Venue B [attendees] => Array ( [0] => Array ( [name] => Fred [time] => 5.00pm ) ) ) [1] => Array ( [location] => Venue C [attendees] => Array ( [0] => Array ( [name] => Boris [time] => 6.00pm ) ) ) [2] => Array ( [location] => Venue A [attendees] => Array ( [0] => Array ( [name] => Rupert [time] => 7.00pm ) [1] => Array ( [name] => Davis [time] => 9.00pm ) ) ) ) ) )
Output for 7.2.0 - 7.2.33
Fatal error: Uncaught Error: Call to undefined function array_key_last() in /in/bC4LK:64 Stack trace: #0 {main} thrown in /in/bC4LK on line 64
Process exited with code 255.

preferences:
39.54 ms | 1143 KiB | 9 Q