Php 此开关有什么问题$\u获取错误?

Php 此开关有什么问题$\u获取错误?,php,Php,它给了我这个错误: 分析错误:语法错误,中的文件意外结束 第47行的D:\xampp\htdocs\profile.php 这就是我的代码的结尾。 我忘记了什么,因为如果我对这段代码进行注释,它会很好地工作。它应该如下所示: <?php switch (true) : case $_GET['change']: echo 'hello'; break; default: echo 'bye'; break; ?> 来自

它给了我这个错误:

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

这就是我的代码的结尾。
我忘记了什么,因为如果我对这段代码进行注释,它会很好地工作。

它应该如下所示:

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

来自


正确的代码是:

<?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";
}
?>


这是因为你错过了终端开关;或者只使用括号{}

最好设置括号:

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

如果要使用,请查看此警告:

警告

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


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

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

您正在使用控制结构的替代语法,这意味着您必须在最后关闭交换机,使用此

<?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;

}
?>
制作完整的代码

endswitch

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

switch (true):
    case $_GET['change']:
        echo 'hello';
        break;
    default:
        echo 'bye';
        break; 
endswitch;
?>
在任何情况下,只需执行
case$\u GET['change']:
即可检查是否包含任何值,而不是它们是什么,或者它是否已设置,因此您可能会收到有关此的警告。如果您打算扩展您的结构,您应该看到@C0dekid的示例-这就是您应该如何构建您的
开关/case


    • 您没有为交换机安装正确的外壳,请不要使用“:”但“{”。例如:

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

      了解如何使用它您不能将$\u GET['change']作为case与@jitendrapurohit达成一致如果您只处理两个条件选项,则switch是一种过度使用。只需使用一个简单的if/else语句。或者您是否有更多未显示的代码。如果您需要检查
      $\u GET['change']==true
      你运气不好,因为
      $\u GET
      参数要么是字符串,要么根本没有设置,非空字符串总是
      ==true
      。看。是的,当然,他忘了endswitch…但是这些问题不应该被删除吗?是的,但是有6个答案现在不能删除。还有一个问题,这是正确的url吗?这是有效的url,但是如果正确,我不知道,如果page/profile.php存在,那么它就是正确的url,?change是$\u GET参数。您可以这样使用它?change=yourValue
      echo isset($_GET['change']) ? "hello" : "bye";
      
      switch (true) {
      case $_GET['change']:
        echo 'hello';
      break;
      default:
        echo 'bye';
      break;
      }