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);