【问题标题】:Multidimensional Array Prev Next with PHP多维数组 Prev Next 与 PHP
【发布时间】:2020-09-19 23:35:26
【问题描述】:

我是 PHP 新手,在这方面已经好几天没有运气了。我想识别当前页面,然后有一个加一和减一的链接来做Prev-Next链接。

数组基于文件夹中的 .md 文件。当我添加博客文章时,它可以增长或缩小。这是当前的测试数组(减去其他键值对):

 $totalPages =  Array
(
    [0] => TD_Page Object
        (
            [keyword] => art
        )

    [1] => TD_Page Object
        (
            [keyword] => but
        )

    [2] => TD_Page Object
        (
            [keyword] => car
        )

    [3] => TD_Page Object
        (
            [keyword] => dat
        )

    [4] => TD_Page Object
        (
            [keyword] => eek
        )

    [5] => TD_Page Object
        (
            [keyword] => fit
        )

由于关键字通过 PHP 路由充当页面 URI,我希望最终结果在概念上看起来像这样:

<a href="/blog/<?= echo next($keyword) ?>">Prev</a> 
<a href="/blog/<?= echo prev($keyword) ?>">Prev</a> 

我想检查当前页面,然后在数组中添加一个指向向上或向下的指针。如果是第一个或最后一个帖子,则不会出现相应的上一个或下一个链接的链接。

【问题讨论】:

  • 您如何识别当前页面?这也是菜单吗?
  • 当前页面通过 URI 中的关键字路由到那里。

标签: php multidimensional-array pagination


【解决方案1】:

使用array_column 然后array_search 查找索引。然后 -/+ 。

示例:

<?php
$data = [
    (object)['keyword' => 'art'],
    (object)['keyword' => 'but'],
    (object)['keyword' => 'car'],
    (object)['keyword' => 'dat'],
    (object)['keyword' => 'eek'],
    (object)['keyword' => 'fit']
];

$current = array_search('car', array_column($data, 'keyword'));

echo 'Current:'.$data[$current]->keyword.PHP_EOL;
echo 'Next:'.$data[$current+1]->keyword.PHP_EOL;
echo 'Prev:'.$data[$current-1]->keyword.PHP_EOL;

结果:

Current:car
Next:dat
Prev:but

https://3v4l.org/lOZ8e

不要忘记检查它是否有下一个或上一个链接,isset() 等。

【讨论】:

  • 谢谢,我需要解释更多。
  • 再次感谢劳伦斯。这有效,但前提是我告诉它我们在哪个变量上。我正在尝试动态确定我们正在查看的关键字,然后从那里 prev-next。数组可以增长也可以缩小,关键字是通配符,所以代码需要看整个数组。有什么想法吗?
  • 请将您的所有代码添加到问题中,看来目标职位已移动。我已根据提供的数组和 2 行代码进行了回答,并且注释 Current page is routed there via keyword in the URI. 您需要更改为 array_search($_GET['param'],,但您也不会显示重写它没有提到通配符
  • 或者只是提出一个新问题
猜你喜欢
  • 2015-10-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多