Есть ли синтаксическая ошибка в моем коде?

Есть ли синтаксическая ошибка в моем коде? Кажется, все работает хорошо. Это вопрос, заданный на тесте для самостоятельного изучения, и я не хочу, чтобы его застукали на вопросе об уловке.

$i = fgets(STDIN);

switch ($i) {
case 'a':
case 'i':
case 'e':
case 'u':
case 'o':
echo("vowel\n");
default:
echo("non vowel\n");
}

0

Решение

Хотя это работает, это не совсем «правильно». Ты забыл 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 является неоптимальным для такого рода вещей и — как показывает ошибка в вашем коде — более подвержен ошибкам;)

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]