【问题标题】:Find last and next item in mutlidimentional array在多维数组中查找最后一项和下一项
【发布时间】:2012-04-09 23:10:15
【问题描述】:

过去几天我一直在互联网上寻找解决问题的方法,但到目前为止还没有。我有一组页面需要作为分页处理,即显示我过去的项目和下一个项目。数组内容可以根据您查看的部分而改变,但设置始终相同。

我的数组:

Array
(
    [19] => Array
        (
            [titill] => Kafli 1
            [slug] => kafli1
            [undir] => Array
                (
                    [21] => Array
                        (
                            [titill] => 1.1 Serhljodar
                            [slug] => serhljodar
                            [kaflar] => Array
                                (
                                    [0] => Array
                                        (
                                            [id] => 24
                                            [titill] => Æfing 1
                                            [slug] => aefing1
                                        )

                                    [1] => Array
                                        (
                                            [id] => 25
                                            [titill] => Æfing 2
                                            [slug] => æfing2
                                        )

                                    [2] => Array
                                        (
                                            [id] => 26
                                            [titill] => Próf 1
                                            [slug] => prof1
                                        )

                                )

                        )

                    [22] => Array
                        (
                            [titill] => 1.2. Samhljóðar
                            [slug] => samhljodar
                        )

                    [23] => Array
                        (
                            [titill] => 1.3 Málnotkun
                            [slug] => malnotkun
                        )

                )

        )

    [20] => Array
        (
            [titill] => Kafli 2
            [slug] => kafli2
        )

)

数组键是 post_id,slug 是 url。为了解释我想用这个数组实现什么,我写了一些我想做的例子:

  • 如果我正在查看localhost/kafli1,我会看到下一项是 localhost/kafli1/serhljodar(键 #21)和没有上一项。
  • 如果我正在查看localhost/kafli1/serhljodar,我应该会看到下一个 项目是localhost/kafli1/serhljodar/aefing1 和上一个项目 是localhost/kafli
  • 如果 8 点观看 localhost/kafli/serhljodar/prof1 (ID #26) 我应该看到下一项是localhost/kafli1/samhljodar,上一项是localhost/kafli1/serhljodar/aefing2

有人告诉我使用 array_slice,但到目前为止它并没有太大帮助。各位好心人能帮我解决这个问题吗?


编辑: 有人说数组本身就是问题所在。下面是这个数组填充的 sql:

INSERT INTO `posts` (`id`, `parent_id`, `category`, `position`, `post_slug`, `titill`) VALUES
(9, 0, 3, 0, 'islenska-stig1', 'Íslenska stig 1'),
(19, 9, 3, 0, 'kafli1', 'Kafli 1'),
(20, 9, 3, 0, 'kafli2', 'Kafli 2',),
(21, 19, 3, 0, 'serhljodar', '1.1 Serhljodar'),
(22, 19, 3, 0, 'samhljodar', '1.2. Samhljóðar'),
(23, 19, 3, 0, 'malnotkun', '1.3 Málnotkun'),
(24, 21, 3, 1, 'aefing1', 'Æfing 1'),
(26, 21, 3, 3, 'prof1', 'Próf 1'); 

如果数组是问题,我怎样才能成功地从这些帖子中创建一个分页数组,以便 parent_id 对齐本身在正确的 id 下,这样我就可以得到:

Array
(
    [0] => islenska-stig1
    [1] => kafli1
    [2] => serhljodar
    [3] => aefing1
    [4] => prof1
    [5] => samhljodar
    [6] => malnotkun
    [6] => kafli2
)

【问题讨论】:

  • current()next()end()这样的函数不适合这个吗?

标签: php arrays pagination


【解决方案1】:

我怀疑你的数组结构有问题。

听起来好像您正在尝试将多维数组用作线性数组。所以我的建议是遍历所有内容,将每个项目推入一维数组。只需使用 currentIndex + - 1 引用您的上一个和下一个项目

【讨论】:

  • 我也想过。但是,如果不打开与数据库的三个或四个连接,我不确定如何设置它。我已经更新了我的问题。
【解决方案2】:

我怀疑您正在寻找的数据结构类型是双向链表。它表示具有指向下一个元素和前一个元素的指针的元素列表。

查看此链接,看看它是否符合您的要求:

http://php.net/manual/en/class.spldoublylinkedlist.php

【讨论】:

  • 听起来很有趣......但不太确定如何测试或实现它:/
猜你喜欢
  • 2015-02-17
  • 1970-01-01
  • 2013-05-12
  • 2012-08-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-03
相关资源
最近更新 更多