Foreach循环在案件里面

时间:2016-04-12 05:16:08

标签: php

我一直试图进入PHP slugs并且我遇到了一个问题 - 我正在尝试设置一种方法,我可以在数组中添加一个新条目,它将为某人创建一个新页面访问。

这是代码:

 switch ($page) {

 // Adds the links.
 foreach ($LINKS as $linkName => $linkAdd) {
   case $linkName:
     require "templates/views/$linkAdd";
 }

 // The default switch.
 default:
   echo '404 Not Found';
 break;

 }

循环给了我一个错误,说在foreach内部使用switch循环是出乎意料的,我想知道是否有办法解决这个问题,或者它是否只是因为不熟悉使用这种方法?

是否只有foreach循环受此方法影响?或者还有其他类型的循环。

2 个答案:

答案 0 :(得分:5)

history不能以这种方式使用。对于你的代码,不需要那个循环。这可能会简单得多。您有foreach数组,其中$Links为关键字,用于包含文件的值。

$page

答案 1 :(得分:0)

切换后不能直接使用foreach循环,它必须在case-Statement(或默认)中。

在这种情况下,使用foreach是错误的方法,请尝试使用array_key_exists():

if (!array_key_exists($page, $LINKS)) {
    // Default case
    echo '404 Not Found';
    exit;
}

require_once __DIR__ . '/templates/views' . $LINKS[$page];

其他一些建议:

  • 使用单引号而不是双引号并使用概念。
  • 始终使用绝对路径(例如使用__DIR__)。
  • 在包含文件时始终使用明确的白名单(我只希望您的$ LINKS数组不是动态创建的)。