PHP中如何从给定的键获取数组中的下一个键?

3
例如,我有一个包含以下元素的数组:
$array = array(
               1 => "a",
               3 => "c",
               4 => "d",
               6 => "f",
              );

如何从给定的键获取下一个键,如果我正在使用某些函数?
请问您需要翻译哪种编程语言的代码呢?
get_next_key_array($array,1);
it should return 3.

如果它是

 get_next_key_array($array,4);
 it should return 6.

我知道在php中可以使用next()、current()和prev()函数,但是我不知道如何使用默认函数来实现我需要的结果。请帮助我。

4个回答

13

试一试这个

function get_next_key_array($array,$key){
    $keys = array_keys($array);
    $position = array_search($key, $keys);
    if (isset($keys[$position + 1])) {
        $nextKey = $keys[$position + 1];
    }
    return $nextKey;
}

2
这个还是一个救星和宝藏。将"-1"添加到一个新函数中,你就可以让所有的数组都能正常工作,包括上一页/下一页按钮。 - KJS
一个好的集成开发环境(IDE)会提示你在return行上$nextKey可能未被声明。也许应该改为return $keys[$position + 1] ?? null;而不是if+return。 这个答案缺少教育性的解释。 - mickmackusa

2
function get_next_key_array( $array, $find_key ) {
    $flag = false;
    foreach( $array as $key => $value ) {
        if( $flag ) {
            return $key;
        }
        if( $key === $find_key ) {
            $flag = true;
        }
    }
    return false;
}

这个答案缺少教育性的解释。 - mickmackusa

0

试试这个:

$len = count($array);
$keys = array_keys($array);
$keys_map = array_flip($keys);
if($keys_map[$current_key]>=$len-1)
    $nextkey = $keys[0];
else
    $nextkey = $keys[$keys_map[$current_key]];

这个答案缺少教育性的解释。 - mickmackusa

0

这是为正常情况而做的:

function get_next_key_array(&$array, $key)
{
    while (key($array) !== $key) {
        next($array);
    }
    next($array);

    return key($array);
}
$array = array(
    1 => 'a',
    3 => 'c',
    4 => 'd',
    6 => 'f',
);
$key = 4;
echo get_next_key_array($array, $key);

演示


请注意,如果未检测到密钥,则会进入无限循环。 - Valerio Bozz
这个答案缺少教育性的解释。 - mickmackusa

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