3v4l.org

run code in 300+ PHP versions simultaneously
<?php $students = [ ["name" => "...", "gender" => "male"], ["name" => "...", "gender" => "female"], ["name" => "...", "gender" => "female"], ["name" => "...", "gender" => "female"], ["name" => "...", "gender" => "male"], ["name" => "...", "gender" => "male"], ["name" => "...", "gender" => "male"], ]; $counters = ['female' => 1, 'male' => 1]; // determine which gender should start from 0 $genderCounts = array_count_values( array_column($students, 'gender') ); arsort($genderCounts); --$counters[key($genderCounts)]; // assign keys $result = []; foreach ($students as $student) { $gender = $student['gender']; $result[$counters[$gender]] = $student; $counters[$gender] += 2; } ksort($result); var_export($result);
Output for 7.2.0 - 7.2.34, 7.3.0 - 7.3.33, 7.4.0 - 7.4.33, 8.0.0 - 8.0.30, 8.1.0 - 8.1.33, 8.2.0 - 8.2.29, 8.3.0 - 8.3.27, 8.4.1 - 8.4.14
array ( 0 => array ( 'name' => '...', 'gender' => 'male', ), 1 => array ( 'name' => '...', 'gender' => 'female', ), 2 => array ( 'name' => '...', 'gender' => 'male', ), 3 => array ( 'name' => '...', 'gender' => 'female', ), 4 => array ( 'name' => '...', 'gender' => 'male', ), 5 => array ( 'name' => '...', 'gender' => 'female', ), 6 => array ( 'name' => '...', 'gender' => 'male', ), )

preferences:
125.02 ms | 408 KiB | 5 Q