make(Illuminate\Contracts\Console\Kernel::class); $kernel->bootstrap(); $members = [ ['tier' => 'E', 'timestamp' => 10], // Passive ['tier' => 'C', 'timestamp' => 20], // 1 direct recent ['tier' => 'A', 'timestamp' => 30], // 2 directs latest ['tier' => 'A', 'timestamp' => 15], // 2 directs older ['tier' => 'A', 'timestamp' => 25], // 2 directs mid ['tier' => 'C', 'timestamp' => 5], // 1 direct older than E! ]; usort($members, function($a, $b) { if ($a['tier'] !== $b['tier']) { return $a['tier'] <=> $b['tier']; // A > B > C (Ascending alphabetically) } return $a['timestamp'] <=> $b['timestamp']; // Older timestamp smaller value wins }); print_r($members);