首页 > 解决方案 > 为什么我在这方面遇到这么多麻烦:

问题描述

拜托,为什么我有这么多麻烦,($menu 是一个关联数组)。它没有循环:

<?php

foreach ($menu as $menuItem => $page) {

    if (isset($_GET[''])) {
        include PAGE_PATH . "/home";
    } elseif (isset($_GET['$menuItem'])) {
        include(PAGE_PATH . "/" . "$page");
    }
}
?> 

标签: phparraysinclude

解决方案


不确定您对 的期望$_GET[''],但我怀疑这是否符合您的期望。翻转逻辑并检查真正的获取参数。此外,在单引号内不解析变量'使用双引号"或数组索引只使用变量:

$include = "home";

foreach ($menu as $menuItem => $page) {
    if (isset($_GET[$menuItem])) {
        $include = "$page";
        // if multiple get params this will use first, remove to use last
        break;
    }
}
include(PAGE_PATH . "/$include.php"); // added .php

这是假设$menu看起来像:

Array
(
    [contact] => contact.php
    [about] => about.php
)

访问此页面的 URL 类似于:index.php?contactindex.php?var=1&contact等。


推荐阅读