【问题标题】:Issue with switch statement and $_GETswitch 语句和 $_GET 的问题
【发布时间】:2014-01-20 17:36:45
【问题描述】:

我对这个开关盒有疑问,如果有人能提示我出了什么问题,我会很高兴。

下面的行继续在默认值 (centre_1) 下方添加 case 1、2 或 3,而不是替换它。

我找不到哪里出错了。这是代码:

<?php include("mx/centre_1.php");
if(!isset($_GET['page'])) {
    $page='centre_mx.php';
} else {
    switch($_GET['page']) {
        case'centre_1':
            include('/mx/centre_1.php');
            break;
        case'centre_2':
            include('/mx/centre_2.php');
            break;
        case'centre_3':
            include('/mx/centre_3.php');
            break;
    }
}   
?>

任何帮助都会有所帮助。

【问题讨论】:

  • isset 将检查集合中的变量与否。但它不会检查空值。所以最好使用empty
  • 再次阅读第一行代码...
  • 你想做什么? “替换”它是什么意思?
  • "下面的行继续在默认值 (centre_1) 下面添加 case 1、2 或 3,而不是替换它。"为什么你认为他们应该替换它?
  • 我希望页面在页面加载时自动显示第一个案例,并在选择时显示其他案例(例如 )跨度>

标签: php get switch-statement


【解决方案1】:

'/mx/centre_1.php' 总是显示的原因是因为您将它放在代码的顶部,在 if 和 switch 语句之外。因此,它将包含在每个页面加载中。

为了在没有选择其他选项时仅显示“/mx/centre_1.php”,您需要将其设为默认开关盒。

   $page = '';
   if(in_array('page', $_GET)) {
      $page = $_GET['page'];
    }

    switch($page) {
        case 'centre_2':
            include('/mx/centre_2.php');
            break;
        case 'centre_3':
            include('/mx/centre_3.php');
            break;
        default:
            include('/mx/centre_1.php');
    }

当没有其他情况与提供的变量匹配时,将发生 switch 语句中的默认情况。也就是说,如果 $_GET['page'] 不等于 center_2 或 center_3 则将执行默认代码。

我建议阅读更多关于 switch 语句 here 的内容,因为您似乎不了解它们的工作原理。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-10-07
    • 1970-01-01
    • 1970-01-01
    • 2010-12-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多