0

所以我基本上试图让它像: ?p=blabla&dep=blabla

switch($_GET['p'])
{
case 'home':
    include("template/index.html");
    break;
case null:
    include("template/index.html");
    break;
case 'roster':
    include("template/roster.html");
    break;
case 'about':
    include("template/about.html");
    break;
case 'members':
    include("members/index.php");
    break;
}

if(($_GET['p'] == 'about') && ($_GET['dep'] == 'hospital')) 
{
    include("template/hospital.html");
}

当我做 blablabla?p=about&dep=hospital 时,它仍然包括 about.html 和 hospital.html

我怎样才能解决这个问题?

4

3 回答 3

0

只需将 if 语句放在 switch 案例中。

case 'about':
    if ($_GET['dep'] == 'hospital')
        include("template/hospital.html");
    else
        include("template/about.html");
    break;
于 2013-06-13T10:24:39.173 回答
0

这正是您所要求的。

首先你有你的 switch 语句。它看到 $_GET['p'] 中有“about”,因此它将包含该脚本。

之后你有你的 if 并且这也评估为 true,因此它被包括在内。

要改变这一点:

如果在您的“关于”案例中添加另一个。

case 'about':
    if ($_GET['dep'] == 'hospital') break;
    include("template/about.html");
    break;
于 2013-06-13T10:25:58.157 回答
0

您的开关在查找 dep=hospital 的行之前被处理,因此它甚至会在查找部门之前包含 about.html。

如果您只想显示 hospital.html,但前提是 p=about 将测试移动到案例中。

switch($_GET['p'])
{
case 'home':
  include("template/index.html");
  break;
case null:
  include("template/index.html");
  break;
case 'roster':
  include("template/roster.html");
  break;
case 'about':
  if(($_GET['dep'] == 'hospital')) {
    include("template/hospital.html");
  } else {
    include("template/about.html");
  }
  break;
case 'members':
    include("members/index.php");
    break;

}

于 2013-06-13T10:27:31.833 回答