【问题标题】:PHP GET, if / esle [closed]PHP GET,如果/否则 [关闭]
【发布时间】:2011-09-20 19:32:33
【问题描述】:

这段代码有什么问题:

<?php
if ($_GET['variable'] == "a") {
    $variable = "a";
}
else {
    $variable = "b" 
}
echo $variable;
?>

我收到内部服务器错误。

【问题讨论】:

    标签: php if-statement get


    【解决方案1】:

    你在这里漏掉了一个分号:$variable = "b";

    【讨论】:

      【解决方案2】:
      <?php
      $variable = 'b';
      if (isset($_GET['hop']) && $_GET['hop'] == "a")
      {
          $variable = 'a';
      }
      
      echo $variable;
      ?>
      

      关于你做错了什么的解释请看这里:http://php.net/manual/en/getting-started.php

      【讨论】:

      • 这做了一些不同的事情($variable 不能得到 "b" anymore) and NOTICEs are not ERRORs (NOTICEs doesn't break execution). It's cleaner with isset()` (或类似的东西),但它不会导致问题.
      • +1:因为这是初始化变量的更好方法。
      • 确实如此,但不要通过转换代码结构来混淆问题!
      • @KingCrunch:您不希望代码中有任何通知。如果您将它们最小化,那些浮出水面意味着您的代码可能存在错误。是的,$variable 可以得到 b: 如果变量不等于 "a"!
      • 不要通过转换代码结构来混淆事物,这远没有混淆,我不仅提供了答案,还展示了如何高效地编码
      【解决方案3】:

      $variable 的 else 部分缺少分号。

      else {
          $variable = "b"; 
      }
      

      【讨论】:

        【解决方案4】:

        您忘记了$variable = "b" 行的结尾;

        【讨论】:

          【解决方案5】:

          缺少分号

          $variable = "b";
          

          【讨论】:

            【解决方案6】:

            缺少分号不会导致内部服务器错误。检查根目录中是否有 .htaccess 文件,以及它的配置是否正确。

            【讨论】:

            • 是的,在 Nginx 这样的服务器上,你会得到一个内部服务器错误,因为 fast-cgi 返回的是一个错误代码,这在 Nginx 中默认会抛出一个内部服务器错误,你必须配置它正确地将错误传递到输出缓冲区
            【解决方案7】:

            可能是第 6 行中缺少的;

                $variable = "b";
            

            因为其他一些答案也提供了替代方案

            echo isset($_GET['hop']) && ($_GET['hop'] == "a")
                 ? 'a'
                 : 'b';
            

            :)

            【讨论】:

              猜你喜欢
              • 2022-11-28
              • 2018-08-02
              • 2015-12-01
              • 1970-01-01
              • 2023-03-09
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多