Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何从关联数组中获取上一个/下一个键?_Php_Arrays_Key_Associative Array - Fatal编程技术网

Php 如何从关联数组中获取上一个/下一个键?

Php 如何从关联数组中获取上一个/下一个键?,php,arrays,key,associative-array,Php,Arrays,Key,Associative Array,我有一个页面数组($menuItems)。我将其设置为:“pagename”=>“pagelink”。我有一个变量($currentPage)跟踪当前页面的内容 我想要完成的是获取页面名称的变量,遍历列表并确定哪个页面是下一个页面(数组中的下一个项目),哪个页面是上一个页面 我设置了一个while循环,试图更改指向当前页面的内部指针。然而,我相信我创建了一个无限循环,或者是因为它不会加载我的结果 下面是我的代码示例: $menuItems = array ( "Page one" =&g

我有一个页面数组(
$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);
 }

在我将内部指针设置到正确的数组项之后,我想使用
next()
prev()
函数告诉next和prev。我还没有足够的时间来实现这一点。

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

只需将所有关联关键点保存到一个数组中,以便可以使用数字关键点访问关键点(数组)

因此,您将拥有如下数组(
$keys
):

现在,您只需在键中输入
$currentPage
,即可将当前键作为数字键,并根据需要添加或减去一个键(然后还需要检查下一个/prev键是否存在,这样您就不会有未定义的索引)


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

只需将所有关联关键点保存到一个数组中,以便可以使用数字关键点访问关键点(数组)

因此,您将拥有如下数组(
$keys
):

现在,您只需在键中的
$currentPage
中获取当前密钥作为数字键,并根据需要添加或减去一个键(然后还想检查下一个/prev键是否存在,以便您没有未定义的索引)


你能提供一个输入和期望输出的例子吗?我不知道你想说什么,你能提供一个输入和期望输出的例子吗?我不知道你想做什么这帮了我很大的忙!!非常感谢。美好的不过,扮演恶魔的代言人——如果您选择“第一页”或“第三页”,这将触发PHP通知(未定义的偏移量)。请注意,这可能是OP的边界检查练习。@Darragh我在回答中说:(然后你还要检查next/prev键是否存在,这样你就没有未定义的索引)对不起,你当然有。我有一个只阅读代码的习惯:)这帮了大忙!!非常感谢。美好的不过,扮演恶魔的代言人——如果您选择“第一页”或“第三页”,这将触发PHP通知(未定义的偏移量)。请注意,这可能是OP的边界检查练习。@Darragh我在回答中说:(然后你还要检查next/prev键是否存在,这样你就没有未定义的索引)对不起,你当然有。我有一个习惯,就是阅读代码:)
Array
(
    [0] => Page one
    [1] => Page two
    [2] => Page three
)
<?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>";

?>
Next item: index.php?page=page_three
Prev item: index.php?page=page_one
$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";

while (key($menuItems) !== $currentPage){
    next($menuItems);
} 

$nextPage = next($menuItems);