What are the limitations of using specific criteria, such as vowel endings for girls' names and consonant endings for boys' names, when sorting a list in PHP?

When sorting a list of names in PHP based on specific criteria like vowel endings for girls' names and consonant endings for boys' names, the limitation arises when a name does not fit neatly into either category. To solve this issue, you can create a custom sorting function that considers both criteria and sorts the names accordingly.

$names = ["Emma", "Olivia", "Liam", "Noah", "Ava", "Ethan"];

usort($names, function($a, $b) {
    $vowels = ['a', 'e', 'i', 'o', 'u'];
    
    $a_end = strtolower(substr($a, -1));
    $b_end = strtolower(substr($b, -1));
    
    if (in_array($a_end, $vowels) && !in_array($b_end, $vowels)) {
        return -1;
    } elseif (!in_array($a_end, $vowels) && in_array($b_end, $vowels)) {
        return 1;
    } else {
        return strcmp($a, $b);
    }
});

print_r($names);