我有一个页面数组($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。我没有足够的实现它。
答案 0 :(得分:5)
我认为这是一个更简单的解决方案:
只需将所有关联键保存到array_keys()
的数组中,这样就可以使用数字键访问键(数组)。
所以你将得到一个这样的数组($keys
):
Array
(
[0] => Page one
[1] => Page two
[2] => Page three
)
现在您只需array_search()
键中的$currentPage
即可将当前键作为数字键并且您想要添加或减去一个键(您还需要检查下一个/ prev键存在,因此您没有未定义的索引。)
<?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
答案 1 :(得分:0)
$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);