Есть ли синтаксическая ошибка в моем коде? Кажется, все работает хорошо. Это вопрос, заданный на тесте для самостоятельного изучения, и я не хочу, чтобы его застукали на вопросе об уловке.
$i = fgets(STDIN);
switch ($i) {
case 'a':
case 'i':
case 'e':
case 'u':
case 'o':
echo("vowel\n");
default:
echo("non vowel\n");
}
Хотя это работает, это не совсем «правильно». Ты забыл break
из случая гласного.
Лично я бы не стал использовать switch
за это. Я бы наверное сделал:
$vowels = ['a','e','i','o','u'];
if( in_array(strtolower($i),$vowels)) {
echo "vowel\n";
}
else {
echo "consonant\n"; // the proper word for "non-vowel" :p
}
Это потому, что у вас есть двухстороннее утверждение: либо оно есть, либо нет. switch
является неоптимальным для такого рода вещей и — как показывает ошибка в вашем коде — более подвержен ошибкам;)
Других решений пока нет …