如何从关联数组中获取 prev/next 键?
How can I get the prev/next key from an associative array?
我有一组页面 ($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()
函数告诉下一个和上一个。我还没有做到这一点。
我认为这是一个更简单的解决方案:
只需要将所有的关联键保存到一个数组中array_keys()
,这样就可以用数字键访问键(数组)了。
所以你会有这样的数组 ($keys
):
Array
(
[0] => Page one
[1] => Page two
[2] => Page three
)
现在您只需 array_search()
您的 $currentPage
键即可将当前键作为数字键,并根据需要加或减一个(然后您还想检查 next/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
$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);
我有一组页面 ($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()
函数告诉下一个和上一个。我还没有做到这一点。
我认为这是一个更简单的解决方案:
只需要将所有的关联键保存到一个数组中array_keys()
,这样就可以用数字键访问键(数组)了。
所以你会有这样的数组 ($keys
):
Array
(
[0] => Page one
[1] => Page two
[2] => Page three
)
现在您只需 array_search()
您的 $currentPage
键即可将当前键作为数字键,并根据需要加或减一个(然后您还想检查 next/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
$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);