3v4l.org

run code in 300+ PHP versions simultaneously
<?php $array = [ ["name" => "a", "gender" => "male"], ["name" => "b", "gender" => "female"], ["name" => "c", "gender" => "female"], ["name" => "d", "gender" => "female"], ["name" => "e", "gender" => "male"], ["name" => "f", "gender" => "male"], ["name" => "g", "gender" => "male"], ]; $nths = []; $genders = []; foreach ($array as ['gender' => $v]) { $genders[] = $v; $nths[] = $counters[$v] = ($counters[$v] ?? 0) + 1; } array_multisort( $nths, /* prioritize by order of encounter per unique gender */ $genders, /* sort by gender per encounter group */ SORT_DESC, /* sort "male" before "female" per encounter group */ $array /* break any remaining ties and modify the original array */ ); var_export($array);

preferences:
28.96 ms | 405 KiB | 5 Q