Вот за такой код очень хочется бить по голове некоторых местных икспердов, которых хлебом не корми, но дай повыделываться и показать немерянные ум и сообразительность.
В то время как нормальный код должен выглядеть вот так
function reverse_vowels($word) {
$vowels = [];
foreach(str_split($word) as $c) {
if (preg_match('/[ayeiou]/i', $c)) {
$vowels[] = $c;
}
}
$v = 0;
$reverse = '';
for ($i=0; $i < strlen($word); $i++) {
$is_vowel = preg_match('/[ayeiou]/i', $word[$i]);
$reverse .= $is_vowel ? $vowels[count($vowels) - 1 - $v++] : $word[$i];
}
return $reverse;
}
который не вызывает вообще никаких вопросов
Плюс по-хорошему можно первый цикл заменить на
preg_match_all('/[ayeiou]/i', $word, $matches);
$vowels = $matches[0];