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 。我还远远不够实现这一点。
我认为这是一个简单得多的解决方案:
只需使用将所有关联键保存到数组中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)
| 归档时间: |
|
| 查看次数: |
198 次 |
| 最近记录: |