3v4l.org

run code in 300+ PHP versions simultaneously
<?php $array = [ (object) ['graduateYear' => 'Class of 2007', 'id' => 1, 'lastsName' => 'Igbashio', 'firstName' => 'Kalifort'], (object) ['graduateYear' => 'Class of 2007', 'id' => 2, 'lastsName' => 'Usman', 'firstName' => 'Bello'], (object) ['graduateYear' => 'Class of 2007', 'id' => 3, 'lastsName' => 'Manasseh', 'firstName' => 'Isa'], (object) ['graduateYear' => 'Class of 2008', 'id' => 4, 'lastsName' => 'Igbashio', 'firstName' => 'Sansa'], (object) ['graduateYear' => 'Class of 2008', 'id' => 5, 'lastsName' => 'Yusuf', 'firstName' => "Sa'atu"], (object) ['graduateYear' => 'Class of 2008', 'id' => 6, 'lastsName' => 'Rimamtse', 'firstName' => 'Bleesing'], ]; $grouped = []; foreach ($array as $obj) { sscanf($obj->graduateYear, 'Class of %d', $year); unset($obj->graduateYear); $grouped[$year]['title'] = $year; // doesn't matter that this is overwritten over and over $grouped[$year]['data'][] = $obj; } var_export(array_values($grouped));
Output for 8.0.1 - 8.0.30, 8.1.0 - 8.1.28, 8.2.0 - 8.2.19, 8.3.0 - 8.3.7
array ( 0 => array ( 'title' => 2007, 'data' => array ( 0 => (object) array( 'id' => 1, 'lastsName' => 'Igbashio', 'firstName' => 'Kalifort', ), 1 => (object) array( 'id' => 2, 'lastsName' => 'Usman', 'firstName' => 'Bello', ), 2 => (object) array( 'id' => 3, 'lastsName' => 'Manasseh', 'firstName' => 'Isa', ), ), ), 1 => array ( 'title' => 2008, 'data' => array ( 0 => (object) array( 'id' => 4, 'lastsName' => 'Igbashio', 'firstName' => 'Sansa', ), 1 => (object) array( 'id' => 5, 'lastsName' => 'Yusuf', 'firstName' => 'Sa\'atu', ), 2 => (object) array( 'id' => 6, 'lastsName' => 'Rimamtse', 'firstName' => 'Bleesing', ), ), ), )

preferences:
77.58 ms | 404 KiB | 91 Q