php - 名称数组 = 获取正确的文件

标签 php arrays include

我正在尝试编写一个文件列表并将它们放入一个数组中。 必须更改调用外部内容的页面上的内容。

我找到了这段代码,并试图让它发挥作用。 LINK (最后评论)

$all_pages=array("main","page_two","page_three");    
$page = $_GET['page'];    
if( isset($page) and array_key_exists("$page", $all_pages) ) // added a missing ')'
{
include('subfolder/folder/'.$_GET['$page'].'.html');
}

好吧,这行不通。 只是无法找到正确的文件。 (内容始终显示为空)。

我(尝试)像这样调用文件:

<ul>    
   <li><a href="template.php?main">Main content</a></li>
   <li><a href="template.php?page_two">Second content</a></li>
   <li><a href="template.php?page_three">Third content</a></li>
</ul>

提前致谢!

最佳答案

您必须使用 in_array() 来测试允许的值。 array_key_exists 要求页面名称是数组键。

其次,$_GET["page"] 将为空,因为您没有该名称的 get 参数。您必须调整您的链接:

   <li><a href="template.php?page=main">Main content</a></li>
   <li><a href="template.php?page=page_two">Second content</a></li>
   <li><a href="template.php?page=page_three">Third content</a></li>

(或者使用 $_SERVER["QUERY_STRING"]。但是可能不想这样做。)

你的第三个问题是使用:

include('subfolder/folder/'.$_GET['$page'].'.html');
                            ^^^    ^^^

你应该在这里只使用 $page 变量,你已经从 $_GET 中读取了它。再次使用该名称作为键将不起作用。而且你还在单引号中使用了它(双重错误,但幸运的是没有效果)。

正确的是:

$all_pages = array("main", "page_two", "page_three");    
$page = $_GET['page'];
if ( in_array($page, $all_pages) )
{
    include('subfolder/folder/'.$page.'.html');
}

关于php - 名称数组 = 获取正确的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7883005/

相关文章:

php - HTML PHP 数据库 - 编辑/删除按钮 - 传递值

php - 编程时行结束会导致什么?

c - 字符串指针数组的大小?

php - 包含包含文件的 php 文件

php - where 子句中的未知列,但我已经验证

php - preg_replace 即使在第一次替换之后也匹配字符串中的所有匹配项

java - 引用 Java 动态数组

java - 无法在 getInstance() 中传递 Context

c++ - 设置包括 mac os 中 eclipse CDT 中的路径(来自框架的 header )

c++ - fatal error C1083 : Cannot open include file: 'boost/config.hpp' : No such file or directory