【问题标题】:PHP - While / Else error? [closed]PHP - While / Else 错误? [关闭]
【发布时间】:2013-06-15 17:35:54
【问题描述】:

我有以下 php 代码:

<?php




if (!isset($_REQUEST['search'])){

    while(($write=mysql_fetch_array($gamesearched)) != null){
    echo "Found!";
    }else{
    echo "No results";
    }

    }
?>

它给了我一个错误:

解析错误:语法错误,出现意外的“else”(T_ELSE) C:\php\www\Gameplay\backgame.php 第 41 行

【问题讨论】:

  • 因为那不是有效的语法...else只能与if配对。
  • 编辑了话题,请再看一遍代码(?)
  • 您仍然将elsewhile 配对,而不是与if 配对。
  • 那我该怎么办?
  • 欢迎 ;)。如果您找到答案,则无需关闭此主题。你可以做的是“接受”下面的答案:点击修复它的答案。如果没有,您可能需要写下自己的解决方案并将其标记为正确答案。目标是在这里有一个清晰的问答页面,而不是扔掉的论坛主题:)。另外,我看不出你问的另一个问题与这个不同,不要打开重复项!祝你的代码好运:)

标签: php mysql if-statement while-loop


【解决方案1】:

PHP 不支持while 语句中的else。您将需要使用哨兵。

【讨论】:

  • else 实际上不在。但我知道你的意思
  • @A.S.Roma:它在 statement 中,即使它不在 block 中。
  • 是但不在“while 语句”中:)
  • @A.S.Roma 您写的声明while (something) { ... } else { ... }。这不是有效的 PHP - while 语句的唯一有效形式是 while (something) { ... }。错误消息的含义与它所说的完全相同 - 意外的“其他”。
  • 好的,这可以从两个方面理解...不再争论,同意
【解决方案2】:

你的if在哪里???你不见了IF

还要注意if/else结构如下:if() {} -&gt; else {} 你还是放错了else,应该在if语句之外。

【讨论】:

    【解决方案3】:

    我猜你放错了右括号。请参阅下面可能的正确代码。

    if (!isset($_REQUEST['search'])){
      while($write=mysql_fetch_array($gamesearched)){
        if($write != null) {
          echo "Found!";
        }else{
          echo "No results";
        }
      } 
    }
    

    while(($write=mysql_fetch_array($gamesearched)) != null){
      if (!isset($_REQUEST['search'])){
        echo "Found!";
      } else {
        echo "No results";
      }
    }
    

    【讨论】:

    • 编辑了话题,请再看一遍代码(?)
    • 只有在用户没有点击我拥有的搜索按钮时才会显示 No Results 消息...
    • 既然没有while-else语句,我该怎么办?
    • 您的要求不清楚,请检查编辑后的帖子是否是您要查找的内容。
    【解决方案4】:

    在 PHP 中,while 语句不能有 else 子句。您需要while 之外的一些东西,它可以告诉您它是否至少执行了一次。

    这样的事情怎么样?

    $total = mysql_num_rows($gamesearched);
    if ($total > 0) {
        while (($write=mysql_fetch_array($gamesearched)) !== false) {
            echo "Found!";
        }
    } else {
        echo "No results";
    }
    

    在这种情况下,我在开始之前查看了找到的总行数,但我也可以通过将计数器设置为零然后在 while 循环内递增它来开始。看起来像这样:

    $total = 0;
    while (($write=mysql_fetch_array($gamesearched)) !== false) {
        $total++;
        echo "Found!";
    }
    if ($total == 0) {
        echo "No results";
    }
    

    请注意,如果没有更多行,mysql_fetch_array() 将返回 false,因此我也为您更新了 while 条件。

    话虽如此,我们有充分的理由不在新代码中使用mysql_* 函数。有关更多详细信息以及一些更好的选择,请参阅此问题:Why shouldn't I use mysql_* functions in PHP?

    【讨论】:

      【解决方案5】:

      1)

      if(xxxx){
         //do if
      }else{
         //do else
      }
      

      2)

      if(1):
          echo '123';
      else:
          echo '456';
      endif;
      

      【讨论】:

        猜你喜欢
        • 2013-01-12
        • 2014-03-30
        • 2018-12-05
        • 1970-01-01
        • 2014-01-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多