如何从关联数组中获取prev / next键?

use*_*162 1 php arrays associative-array key

我有一组页面($menuItems)。我将其设置如下:"pagename" => "pagelink"。我有一个变量($currentPage)跟踪当前页面是什么。

我想完成的是获取页面名称的变量,遍历列表,确定哪个将是下一页(数组中的下一个项目),哪个将是上一个页面。

我设置了一个while循环,尝试将内部指针更改为当前页面。但是,我相信我创建了一个无限循环,或者某种原因,因为它不会加载我的结果。

这是我的代码示例:

$menuItems = array (
    "Page one" => "index.php?page=page_one",
    "Page two" => "index.php?page=page_two",
    "Page three" => "index.php?page=page_three"
  )

$currentPage = "Page two";
$key = key($menuItems);

 while ($currentPage !== $key){
    next($menuItems);
 }
Run Code Online (Sandbox Code Playgroud)

在将内部指针设置为正确的数组项之后,我想使用next()prev()函数告诉next和prev 。我还远远不够实现这一点。

Riz*_*123 5

我认为这是一个简单得多的解决方案:

只需使用将所有关联键保存到数组中array_keys(),即可使用数字键访问键(数组)。

因此,您将获得一个像这样的数组($keys):

Array
(
    [0] => Page one
    [1] => Page two
    [2] => Page three
)
Run Code Online (Sandbox Code Playgroud)

现在,你可以array_search()$currentPage的钥匙来获取当前键数字键,只要你想增加或减去一个(你也那么想检查下一个/上键存在,所以你不要有一个未定义的指数) 。

<?php

    $menuItems = array (
        "Page one" => "index.php?page=page_one",
        "Page two" => "index.php?page=page_two",
        "Page three" => "index.php?page=page_three"
      );

    $keys = array_keys($menuItems);
    $currentPage = "Page two";
    $currentNumericalKey = array_search($currentPage, $keys);

    echo "Next item: " . $menuItems[$keys[$currentNumericalKey+1]] . "<br>";
    echo "Prev item: " . $menuItems[$keys[$currentNumericalKey-1]] . "<br>";

?>
Run Code Online (Sandbox Code Playgroud)

输出:

Next item: index.php?page=page_three
Prev item: index.php?page=page_one
Run Code Online (Sandbox Code Playgroud)