PHP博客(迭代数组数据)

时间:2013-07-12 12:25:26

标签: php arrays

我在PHP方面不是特别有经验,但我一直在尝试为朋友的网站创建一个基本博客。我认为现在最简单的事情就是使用静态文件,所以我使用XML来存储博客条目。我已经设法完美地设置了它,因为我可以按照我的要求显示帖子。但是,我现在想要一个导航栏,它允许我根据日期选择帖子,就像大多数博客一样。这些文件简单地命名为1.xml,2.xml,3.xml等,所以我可以遍历它们。这是显示数据数组如何组织的代码(它是数组中的数组,因此第一级将等于文件名+1中的数字)。所以我在如何根据这些数据创建导航栏(ul,li等)时遇到了很多麻烦。据推测,我需要多年时间才能独一无二,然后多年来的几个月才变得独一无二,而且还有几天,那么我可以将每个标题(显然都是链接)置于正确的日期之下。

$data = array();

for ($i = 1; $i <= $numberOfPosts; $i++) {
    $filename = './blogentries/' . $i . '.xml';
    if (!file_exists($filename))
        throw new Exception();

    $blogentry = simplexml_load_file($filename);

    $title = $blogentry->title;
    $dateD = $blogentry->date->day;
    $dateM = $blogentry->date->month;
    $dateY = $blogentry->date->year;
    if (strlen($dateY) === 2) $dateY = '20' . $dateY;
    $entryParagraphs = $blogentry->entry->children();

    $data[] = array(
            (string)$title,
            array(
                (string)$dateY,
                (string)$dateM,
                (string)$dateD
            ),
            $entryParagraphs
        );
}

感谢您提供任何帮助。对不起,如果我没有像往常那样雄辩,我希望你能原谅我的相对无知!

1 个答案:

答案 0 :(得分:1)

根据我的理解,我会选择这种解决方案: 首先,如果您确实知道一点OOP,请创建一个文章类。

在那之后,我会按照你的要求做点什么: 而不是创建一个数组(实际上应该是一个类,(第一个数组,我不知道你是否意识到这一点),我会做这个数组:

$data[$dateY][$dateM][$dateD]=$blogentry;

然后,按照年份,月份,日期对所有文章进行分类,结束您的请求变得非常简单。

编辑: 当我说它应该是一个类时,我在谈论这个数组:

array(
        (string)$title,
        array(
            (string)$dateY,
            (string)$dateM,
            (string)$dateD
        ),
        $entryParagraphs
    )

这通常是课程的设计目标。