在多个数组中查找最后一项和下一项


Find last and next item in mutlidimentional array

过去几天我一直在互联网上搜索我的问题的解决方案,但到目前为止什么都没有。我有一个页面数组,我需要将其作为分页处理,即显示我的上一项和下一项。阵列内容可能会根据您查看的部分而变化,但设置始终相同。

我的阵列:

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
)

我怀疑数组的结构是问题所在。

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

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

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

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