php中如何找出一个哈希数组中的某个元素的前后项
这个标题看起来比较绕口,我直接上代码吧,比如有下面这样一种形式组织的数组
$a = array( 'key12' => 12323, 'key32' => 4345, 'key13' => 323423, 'key43' => 32423, 'key25' => 33423 );
对于一个未知的数组,我知道了其中任意一个已经存在的元素的键值,比如就是
key13
吧,那我如何知道
key13
的前后分别是哪两个键呢?比如在这个例子中,我如何才能知道
$a
和
key13
,找出
key32
和
key43
呢?
这种哈希数组没有顺序的数值键值,因此不能对键值
+1
或者
-1
,来获取前驱和后继,不知道各位有什么好办法?
mickey
10 years, 9 months ago
Answers
可以参考下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/>'; ?>
sryidk
answered 10 years, 9 months ago