【问题标题】:unexpected T_ELSEIF [closed]意外的 T_ELSEIF [关闭]
【发布时间】:2010-10-08 16:41:58
【问题描述】:
$pages = array("grac", "zamknij", "dolaczyc");
$pagesid = array("showNews", "showThread", "showProfile");

foreach ($pagesid as $page) {
  if (isset($_GET[$page])) {
  include('sobra/'.$page.'.php');
  }
}

// just pages
elseif (in_array($_GET['page'], $pages)) {
include("$_GET[page].php");
}

// error
else include('error.php');

给出:
解析错误:语法错误,第 33 行 C:\WAMP\www\sdgag\index.php 中的意外 T_ELSEIF

我认为这应该可行..问题可能是什么?

谢谢

【问题讨论】:

    标签: php foreach


    【解决方案1】:

    elseif 和 else 没有附加到 if,你把它们放在了 foreach 循环块之外。

    【讨论】:

      【解决方案2】:

      也许是另一种方法。执行您的逻辑,并确定最终要包含的页面。完成所有逻辑后,包含您确定的页面。

      以下内容未经测试,可能包含错误。告诉我,我会更新代码。

      <?php
      
        // Predefined list of acceptable pages
        $pages = array("one","two","three");
        $pagesid = array("four","five","six");
      
        // Gather any user-defined page request
        $desPage = trim($_GET["page"]);
      
        // Assume they are wrong, and need to see error.php
        $pageToLoad = "error.php";
      
        // If the user request is not empty
        if (!empty($desPage)) {
          if (in_array($desPage,$pages)) {
            $pageToLoad = $desPage . ".php";
          }
        } else {
        // User request is empty, check other variables
          foreach ($pagesid as $pageid) {
            if (isset($_GET[$pageid])) {
              $pageToLoad = $pageid . ".php";
            }
          }
        }
      
        // Show output page
        include($pageToLoad);
      
      ?>
      

      【讨论】:

        【解决方案3】:

        在 else 之前有一个右括号。

        应该是:

        $pages = array("grac", "zamknij", "dolaczyc");
        $pagesid = array("showNews", "showThread", "showProfile");
        
        foreach ($pagesid as $page) {
          if (isset($_GET[$page])) {
            include('sobra/'.$page.'.php');
          }
          // just pages
          else if (in_array($_GET['page'], $pages)) {
            include("$_GET[page].php");
          }
          // error
          else include('error.php');
        }   
        

        如果您正确缩进源代码,此类错误会很快出现,您可以自行修复。

        【讨论】:

        • 您的“else”未连接到条件语句。它在你的 foreach() 后面。
        • 最后一个 else 仍在 if 子句之外
        • 哦,嘘**你的权利,修复它
        • 输出error.php中的所有内容3次:/
        • 因为这就是您当前编写代码的目的。如果这不是您所期望的,您可能应该重新考虑您的方法。
        【解决方案4】:
        $pages = array('grac', 'zamknij', 'dolaczyc');
        $pagesid = array('showNews', 'showThread', 'showProfile');
        
        foreach ($pagesid as $page) {
          if (isset($_GET[$page])) {
            include('sobra/'.$page.'.php');
          }
          // just pages
          else if (in_array($_GET['page'], $pages)) {
            include($_GET[$page].'.php'); // fixed missing $, restylized to match previous style
          }
          else include('error.php');
        }
        

        【讨论】:

          猜你喜欢
          • 2013-05-13
          • 1970-01-01
          • 2010-09-15
          • 2012-05-19
          • 1970-01-01
          • 2014-01-27
          • 2021-11-17
          • 2013-06-30
          • 2016-04-02
          相关资源
          最近更新 更多