【问题标题】:PHP blog (iterating through array data)PHP 博客(遍历数组数据)
【发布时间】:2013-07-12 12:25:26
【问题描述】:

我在 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
        );
}

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

【问题讨论】:

  • I'm not especially experienced in PHP, but I've been trying to create a basic blog for a friend's website. 使用wordpress
  • 为什么你使用 xml 你可以使用 mysql 或者 nay rdbms
  • @hek2mgl 好点,但我也很想学习如何为自己做这个。我意识到到目前为止我可能已经搞砸了(或者我可能没有?),但如果有人能给我任何关于如何解决这个问题的指示,非常感谢!
  • 你这样做是为了取得好成绩还是为了自学?如果你想做一件严肃的事情,你应该学习面向对象的 PHP 并考虑拥有一个数据库,或者正如@hek2mgl 建议的那样,不要重新发明轮子。否则它可能是一个很好的项目(即使在这种情况下,学习我首先提到的两件事也可能很好)。否则,导航栏有什么问题?因为我不明白你的要求缺少什么。
  • 自己做博客软件没问题。但是请不要在没有专业人士检查整个代码是否存在安全问题的情况下将其放到网上。

标签: php arrays


【解决方案1】:

据我了解,我将采用这种类型的解决方案: 首先,如果你对 OOP 有一点了解,请创建一个 Article 类。

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

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

然后,您将所有文章按年、月、日分类,因此以您的请求结束变得非常简单。

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

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

这通常是一个类的设计目的。

【讨论】:

  • 据我了解,您的问题是“我怎样才能让我的文章按年分类,然后按月分类,然后按日分类”,这是我写的解决方案。好像我误会了,那你能不能说的更准确些?
  • 对不起,我在您详细说明您的答案之前写了。 :) 我得看看这是否有效并回复你。
  • 我得到的只是这条错误消息:第 49 行 C:\wamp\www\blog\index2.php 中的非法偏移类型
  • 鉴于我没有你所有的数据结构,也许,在最好的情况下你会做一个文章类,有两种解决方案。第一个,你只需要关于这篇文章的小事(就像你只提供一个链接,没有更多信息)然后你应该去$data[$dateY][$dateM][$dateD]=$title; 这样你就可以:1st.provide information to user about what it is 2nd .当用户点击链接时,轻松检索文章。如果您此时需要更多信息,您应该使用$data[$dateY][$dateM][$dateD]=$article;,其中 $article 是一个 Article 对象。
  • $dateY,$dateM$dateD是什么类型的数据?你能在第 49 行之前做一个var_dump($dateY); 吗?告诉我结果。
猜你喜欢
  • 2013-05-23
  • 2011-03-06
  • 1970-01-01
  • 2013-03-26
  • 2023-01-28
  • 2010-12-14
  • 1970-01-01
  • 2011-05-23
  • 2012-11-14
相关资源
最近更新 更多