【问题标题】:Show contents of .php files rather than variable names from array显示 .php 文件的内容,而不是数组中的变量名
【发布时间】:2014-11-17 21:07:00
【问题描述】:

我正在尝试在我的网站上创建一个简单的新闻提要,它将显示目录中的最新 3 篇文章。

我有一个充满 .php 文件的目录,每个文件里面都有一些 html 和一个带有完整页面链接的短篇小说。

在我的主页上我有

<?php
$news = scandir('news_posts', SCANDIR_SORT_DESCENDING);
include($news[0]);
include($news[1]);
include($news[2]);
?>

这不起作用。我试过 print_r、var_export、echo,我能做的最好的事情是让它打印变量的名称(如 14.11.14.php、15.11、14.php 等),而不是其中的 html 内容.php 文件。

这可能真的很简单,但是对于 .php 的新手,我有点迷茫,似乎无法通过搜索引擎找到合适的答案。

【问题讨论】:

    标签: php html arrays


    【解决方案1】:

    scandir 只返回文件名而不是路径,这似乎是news_posts/。试试glob

    $news = glob('news_posts/*.*');
    

    或者继续使用scandir:

    include('news_posts/' . $news[0]);
    

    我会使用glob,因为您只能返回文件并且只能返回具有特定扩展名的文件。

    sort($news, SORT_DESC);
    
    foreach($news as $file) {
        include($file);
    }
    

    发送至glob 并一次性按时间排序:

    array_multisort(array_map('filemtime', $news = glob('news_posts/*.*')), 
                    SORT_DESC, $news);
    

    【讨论】:

    • 除了一件事之外,这是完美的,它首先显示早期的帖子。有没有办法可以扭转它的排序方式?编辑:不出所料,array_reverse 起作用了。感谢您指出 glob,我不知道它存在。非常有用。
    • 视情况而定。您目前正在对我显示的名称进行排序。我添加了一个按修改时间排序的好东西。使用SORT_ASCSORT_DESC
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-17
    • 1970-01-01
    • 2019-12-30
    • 1970-01-01
    • 2016-03-17
    • 1970-01-01
    相关资源
    最近更新 更多