我的代码中有语法错误吗


Is there syntax error in my code?

我的代码中有语法错误吗?一切似乎都很顺利。这是一个自学考试中问的问题,我不想陷入"笨蛋"的把戏问题。。

$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是次优的,并且——正如代码中的错误所示——更容易出错;)