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

时间:2017-01-18 07:31:30

标签: php arrays

例如,我有一个包含以下元素的数组

$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 个答案:

答案 0 :(得分:4)

试一试

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;
}

答案 1 :(得分:1)

function get_next_key_array($array, $findKey)
{
    $flag = false;
    foreach ($array as $key => $value) {

        if ($flag == true) {
            return $key;
        }
        if ($findKey == $key) {
            $flag = true;
        }
    }
    return false;
}

答案 2 :(得分:1)

这适用于正常情况:

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);

<强> DEMO

答案 3 :(得分: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]];