获取数组中的下一个键

14
我有一个数组:
$array = [
    "sdf" => 500,
    "gsda" => 1000,
    "bsdf" => 1500,
    "bads" => 2000,
    "iurt" => 2500,
    "poli" => 3000
];

如何获取下一个键的名称?例如,如果当前数组是gsda,我需要bsdf

2
(参考)http://php.net/manual/zh/ref.array.php - Gordon
对于那些无法弄清如何调整下面的答案以访问下一个值的人...当然,您可以在输入数组上使用返回的键。 - mickmackusa
@Jordy 当一个不合适的答案被标记为已接受并且有绿色的勾,它的作者就无法删除它。 - mickmackusa
4个回答

33

如果指针不在此元素上,而其他解决方案则假定指针在此元素上,则可以使用

<?php
    $keys = array_keys($arr);
    print $keys[array_search("gsda",$keys)+1];

3
这会导致最后一个元素出现问题。应该使用 $keys = array_keys($arr); $index = array_search("gsda",$keys); if ( count($arr) <= $index+1 ) { print 'end of array'; } else { print $keys[$index+1]; } 来正确处理数组边界。 - Bence Szalai

20
$next = next($array); 
echo key($array);
应该返回与$next相对应的键。

8

更新: 请注意,这不是有效的答案,因为它搜索值而不是键。


如果current()指针位于正确的键上,则@Thomas_Cantonnet是正确的,您需要使用next()。 如果您没有通过next()迭代数组,则首先必须遍历数组以正确设置内部索引指针:

$search = "bsdf";
while (($next = next($array)) !== NULL) {
    if ($next == $search) {
        break;
    }
}

现在$next指向您当前的搜索索引,您可以通过next()迭代遍历其余内容。

如果没有更多的元素,next() 将返回 false。 - trocolo
@trocolo 完全正确 - OP 要求的是键而不是值。我会删除这个答案。 - Lars

1
// move to the next position
next($array);
// get the key
$key = key($array);
// return to the original position
prev($array);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接