您好,匿名用户
随意问技术百科期待您的加入

php中如何找出一个哈希数组中的某个元素的前后项

0 投票

这个标题看起来比较绕口,我直接上代码吧,比如有下面这样一种形式组织的数组

$a = array(
    'key12'    =>    12323,
    'key32'    =>    4345,
    'key13'    =>    323423,
    'key43'    =>    32423,
    'key25'    =>    33423
);

对于一个未知的数组,我知道了其中任意一个已经存在的元素的键值,比如就是key13吧,那我如何知道key13的前后分别是哪两个键呢?比如在这个例子中,我如何才能知道$akey13,找出key32key43呢?

这种哈希数组没有顺序的数值键值,因此不能对键值+1或者-1,来获取前驱和后继,不知道各位有什么好办法?

用户头像 提问 2012年 12月1日 @ Shyvana 上等兵 (214 威望)
分享到:

1个回答

0 投票
 
最佳答案

可以参考下php - Search array keys and return the index of matched key - Stack Overflow,思路是找出key所在的索引,然后根据索引再减1或加1取得前后项:http://stackoverflow.com/questions/37...

我写了段测试代码:

<?php
$a = array(
    'key12'    =>    12323,
    'key32'    =>    4345,
    'key13'    =>    323423,
    'key43'    =>    32423,
    'key25'    =>    33423
);
print_r($a);
echo "<br>";

$key = 'key13';

// 寻找key的索引号
$keys = array_keys($a);
$key_index = array_search($key, $keys);
echo "index of $key is $key_index<br/>";

// 将key索引号减1或加1取得前项和后项索引(注意要判断是否越界)
if ($key_index == 0) echo 'no pre key<br/>';
else echo 'pre key is ' . $keys[$key_index - 1] . '<br/>';

if ($key_index < count($keys)) echo 'next key is ' . $keys[$key_index + 1] . '<br/>';
else echo 'no next key<br/>';
?>
用户头像 回复 2012年 12月1日 @ Trundle 上等兵 (301 威望)
选中 2012年 12月1日 @Shyvana
提一个问题:

相关问题

0 投票
1 回复 32 阅读
用户头像 提问 2012年 12月1日 @ Artemis 上等兵 (162 威望)
0 投票
1 回复 27 阅读
0 投票
1 回复 33 阅读
用户头像 提问 2012年 12月1日 @ Aphrodite 上等兵 (185 威望)
0 投票
1 回复 250 阅读
0 投票
1 回复 26 阅读
用户头像 提问 2012年 12月1日 @ Syndra 上等兵 (331 威望)

欢迎来到随意问技术百科, 这是一个面向专业开发者的IT问答网站,提供途径助开发者查找IT技术方案,解决程序bug和网站运维难题等。
温馨提示:本网站禁止用户发布与IT技术无关的、粗浅的、毫无意义的或者违法国家法规的等不合理内容,谢谢支持。

欢迎访问随意问技术百科,为了给您提供更好的服务,请及时反馈您的意见。
...