我的代码中有语法错误吗?一切似乎都很顺利。这是一个自学考试中问的问题,我不想陷入"笨蛋"的把戏问题。。
$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
是次优的,并且——正如代码中的错误所示——更容易出错;)