0
$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

これは私が思うにうまくいくはずです..問題は何である可能性がありますか?

ありがとう

4

4 に答える 4

8

elseif と else は if に関連付けられていないため、foreach ループ ブロックの外に配置しました。

于 2009-02-19T20:31:39.313 に答える
4

おそらく別のアプローチ。ロジックを実行し、最終的にどのページを含めるかを決定します。すべてのロジックが完了したら、決定したページを含めます。

以下はテストされていないため、エラーが含まれている可能性があります。お知らせください。コードを更新します。

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

?>
于 2009-02-19T20:44:22.563 に答える
3

他の前に1つの閉じ括弧があります。

それは読むべきです:

$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');
}   

ソースコードを正しくインデントすると、そのようなエラーがすぐに表示され、自分で修正できます。

于 2009-02-19T20:31:30.250 に答える
-2
$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');
}
于 2009-02-19T20:39:23.323 に答える