switch语句和$ _GET问题

时间:2014-01-20 17:36:45

标签: php get switch-statement

我对这个开关案有疑问,如果有人可以给我一些关于出错的提示,我会很高兴。

下面的行继续将案例1,2或3添加到默认值(centre_1)之下,而不是替换它。

我无法找到它出错的地方。这是代码:

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

任何帮助都会有所帮助。

1 个答案:

答案 0 :(得分:0)

始终显示'/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']不等于centre_2或centre_3,那么将执行默认代码。

我建议您阅读有关切换语句here的更多内容,因为您似乎并不了解它们是如何工作的。