这个开关$ _GET错误怎么了?

时间:2017-02-22 12:30:23

标签: php

<?php switch (true) :
    case $_GET['change']:
      echo 'hello';
    break;
    default:
      echo 'bye';
    break; ?>

它给了我这个错误:

  

解析错误:语法错误,文件意外结束   第47行的D:\ xampp \ htdocs \ profile.php。

这就是我的代码的结尾。 我忘记了什么,因为如果我对这段代码发表评论,那就很有效。

6 个答案:

答案 0 :(得分:3)

您的开关案例需要一个变量来处理case,如:

<?php
switch($_GET["change"])
{
   case "value":
     echo "You called this case.";
     break; // Stop the switch for being executing futher.

   default:  // Set default message if the case wasn't found.
     echo "Cannot find the case.";
     break;

}
?>

了解详情:http://php.net/manual/en/control-structures.switch.php

答案 1 :(得分:2)

正确的代码是:

<?php 
    switch (true) :
        case $_GET['change']:
            echo 'hello';
            break;
        default:
            echo 'bye';
            break; 
    endswitch;
?>

这是因为你错过了endwitch;或者只使用括号{}

答案 2 :(得分:2)

您正在使用控制结构的替代语法,这意味着您必须在结束时关闭您的开关,

endswitch

制作完整的代码

switch (true):
    case $_GET['change']:
        echo 'hello';
        break;
    default:
        echo 'bye';
        break; 
endswitch;
?>

尽管如此,您可以将这段代码简化为以下内容,除非您打算扩展switch/case结构。

echo isset($_GET['change']) ? "hello" : "bye";

在任何情况下,只需执行case $_GET['change']:只检查是否包含任何值,而不是它们是什么,或者它是否设置,因此您可能会收到有关此问题的警告。如果你打算扩展你的结构,你应该看到@ C0dekid的例子 - 那就是你应该如何构建你的switch/case

答案 3 :(得分:1)

应该如下:

<?php 
switch ($_GET['change']) {
case [YOURVALUEHERE]:
  echo 'hello';
break;
default:
  echo 'bye';
break; 
}
?>

来自PHP.net

的示例
<?php
switch ($i) {
    case 0:
        echo "i equals 0";
        break;
    case 1:
        echo "i equals 1";
        break;
    case 2:
        echo "i equals 2";
        break;
    default:
       echo "i is not equal to 0, 1 or 2";
}
?>

答案 4 :(得分:1)

最好设置括号:

<?php
switch ($_GET['change']) {
    case true:
        echo 'hello';
    break;
    default:
        echo 'bye';
    break;
}
?>

如果您想使用alternate syntax,请查看此警告:

  

警告

     

switch语句和第一种情况之间的任何输出(包括空格)都会导致语法错误。例如,这是无效的:

答案 5 :(得分:0)

你没有为你的开关放置正确的外壳,不要使用“:”而是“{”。例如:

switch (true) {
case $_GET['change']:
  echo 'hello';
break;
default:
  echo 'bye';
break;
}