3v4l.org

run code in 300+ PHP versions simultaneously
<?php # The events array. $events = [ [ "title" => "Title 1", "start_time" => "09:00", "end_time" => "17:00", "start_date" => "2017-05-25" ], [ "title" => "Title 2", "start_time" => "09:00", "end_time" => "17:00", "start_date" => "2018-05-25" ], [ "title" => "Title 3", "start_time" => "09:00", "end_time" => "17:00", "start_date" => "2018-05-27" ], [ "title" => "Title 3", "start_time" => "09:00", "end_time" => "17:00", "start_date" => "2018-07-15" ], [ "title" => "Title 4", "start_time" => "09:00", "end_time" => "17:00", "start_date" => "2019-01-02" ] ]; # Create an array to store the data. $grouped = []; # Iterate over every event. foreach ($events as $event) { # Format and save the date as 'Month Year'. $monthYear = date("F Y", strtotime($event["start_date"])); # Define the key of the object as as an array, if not already defined. $grouped[$monthYear] = $grouped[$monthYear] ?? []; # Insert the title to the array corresponding to the formatted date. $grouped[$monthYear][] = $event["title"]; } # Iterate over every key - value. foreach ($grouped as $key => $value) { # Print the 'Month Year' key. echo $key . "\n"; # Iterate over every title and print it. foreach ($value as $title) echo "- $title\n"; # Separate each group with an empty line. echo "\n"; }

preferences:
32.57 ms | 405 KiB | 5 Q