查找多维数组中的上一个和下一个项目

时间:2012-04-09 14:52:03

标签: php arrays pagination

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

我的阵列:

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我应该看到下一个 item是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
)

2 个答案:

答案 0 :(得分:0)

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

听起来好像你正在尝试将多维数组用作线性数组。所以我的建议是你遍历所有内容,将每个项目推送到一个单维数组中。并使用currentIndex + - 1

引用您的上一个和下一个项目

答案 1 :(得分:0)

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

查看此链接以查看其是否符合您的要求:

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