获取switch语句中的案例列表

Dre*_*rew 5 php dynamic switch-statement

我使用PHP Switch语句来确定我的网站页面.所以这是一个例子:

switch($page) {
    case "about":
        $title_name = "About Us";
        $page_content = "includes/about-us.php";
        include("inner.php");
    break;
    case "services":
        $title_name = "Services";
        $page_content = "includes/services.php";
        include("inner.php");
    break;
}
Run Code Online (Sandbox Code Playgroud)

我的文件结构是index.php?page = about,它转换为/ about /使用htaccess.

我想要做的是将所有页面都放在switch语句中并自动获取它并将其放入列表中,这样我就可以自动将其写入我的页脚页面,在那里我将拥有所有链接.

因此,不要手动输入页脚中的所有链接,如:Home | 关于我们| 服务| 常见问题,它会根据我在Switch语句中提供的页面自动提取它.

有没有办法做到这一点?自动添加新页面也很好,它将为新页面添加新案例,并自动在包含文件夹中创建页面.

如果有人能指出我正确的方向,我会非常感激.根据我的理解,我不相信你可以用switch语句来做这件事,我必须以我调用页面的方式重新工作,对吧?

Kin*_*nch 8

$pages = array('about'=> 'About Us', 'services' => 'Services');

if (array_key_exists($page, $pages)) {
   $title_name = $pages[$page];
   $page_content = "includes/$page.php";
   include('inner.php');
}
Run Code Online (Sandbox Code Playgroud)

对于您的页脚,您可以遍历页面列表.要添加新页面,只需将其添加到阵列并创建相应的文件即可.

但回答你的问题:不,你不能在运行时分析代码语句.


vst*_*stm 5

不,使用它是不可能的switch- 但你可以将这些信息存储在一个数组中:

$page_list = array(
    'about' => array(
        'title' => 'About Us',
        'content' => 'includes/about-us.php',
    ),
    'services' => array(
        'title' => 'Services',
        'content' => 'includes/services.php',
    ),
);

if(isset($page_list[$page])) {
    $page_info = $page_list[$page];

    $title_name = $page_info['title'];
    $page_content = $page_info['content'];

    include("inner.php");
} else {
    // 404 - file not found
}

// create links
foreach($page_list as $link_name => $page_ent) {
    echo "<a href=\"/{$link_name}/\">{$page_ent['title']}</a><br />"
}

// output
// <a href="/about/">About Us</a><br />
// <a href="/services/">Services</a><br />
Run Code Online (Sandbox Code Playgroud)