是不是可以在foreach循环中使用PHP include? p>
我有一组名为$posts
的文件名:
Array ( [3] => post-an-example-post.html
[4] => post-my-first-test-post.html
[5] => post-my-second-test-post.html )
我想为数组中的每个项输出每个内容(这是一些简单的HTML):
foreach ($posts as $post){
$post = "/posts/" . $post;
echo $post;
include $post;
}
这给了我一个错误,因为它不会使用我添加的开头/
而是保留在同一个文件中?:
Warning: include(/posts/post-an-example-post.html): failed to open stream: No such file or directory in /Applications/MAMP/htdocs/quick-blog/showposts.php on line 7
这些文件都存储在/ posts /目录中。
编辑:这是如何创建数组$ posts。它扫描目录并删除任何不以posts-
function postArray(){
$dir = 'posts';
$files = scandir($dir);
$posts = array_filter(
$files,
function($value) {
return (strpos($value, 'post-') === 0);
}
);
return $posts;
}
答案 0 :(得分:2)
您正在为include
提供绝对位置。它正在文件系统的顶部寻找名为posts
的目录,而不是文档根目录。
答案 1 :(得分:0)
有可能,我经常扫描给定文件夹中的文件并循环并包含每个文件。看起来像你的阵列?
它不应该是字符串吗?你也可以把file_exists做到:)
Array ( [3] => "post-an-example-post.html"
[4] => "post-my-first-test-post.html"
[5] => "post-my-second-test-post.html"
)
答案 2 :(得分:0)
首先,如果你在数组上做foreach($ posts as $ post),那么post将是数组的键。数组必须是这样的:
$posts = Array ( 3 => "post-an-example-post.html",
4 => "post-my-first-test-post.html",
5 => "post-my-second-test-post.html",
);
立即尝试使用此数组