Получить следующий элемент массива, используя ключ php

У меня есть массив

Array(1=>'test',9=>'test2',16=>'test3'... and so on);

как мне получить следующий элемент массива, передав ключ.

например, если у меня есть ключ 9, тогда я должен получить test3 в качестве результата. если у меня есть 1, тогда он должен вернуть результат 'test2'.

Отредактировано, чтобы сделать его более понятным

echo  somefunction($array,9); //result should be 'test3'
function somefunction($array,$key)
{
  return $array[$dont know what to use];
}

Ответ 1

function get_next($array, $key) {
   $currentKey = key($array);
   while ($currentKey !== null && $currentKey != $key) {
       next($array);
       $currentKey = key($array);
   }
   return next($array);
}

Или:

return current(array_slice($array, array_search($key, array_keys($array)) + 1, 1));

Трудно вернуть правильный результат во втором методе, если искомый ключ не существует. Следует использовать с осторожностью.

Ответ 2

Вы можете использовать next(); функция, если вы хотите просто получить следующий следующий элемент массива.

<?php
$transport = array('foot', 'bike', 'car', 'plane');
$mode = current($transport); // $mode = 'foot';
$mode = next($transport);    // $mode = 'bike';
$mode = next($transport);    // $mode = 'car';
$mode = prev($transport);    // $mode = 'bike';
$mode = end($transport);     // $mode = 'plane';
?>

Обновление

и если вы хотите проверить и использовать этот следующий элемент, вы можете попробовать:

Создайте функцию:

function has_next($array) {
    if (is_array($array)) {
        if (next($array) === false) {
            return false;
        } else {
            return true;
        }
    } else {
        return false;
    }
}

Назовите его:

if (has_next($array)) {
    echo next($array);
}

Источник: php.net

Ответ 3

$array = array("sony"=>"xperia", "apple"=>"iphone", 1 , 2, 3, 4, 5, 6 );

foreach($array as $key=>$val)
{
    $curent = $val;
    if (!isset ($next))
        $next = current($array);
    else
        $next = next($array);
    echo (" $curent | $next <br>");
}

Ответ 5

Вы можете печатать следующим образом: -

foreach(YourArr as $key => $val)
{  echo next(YourArr[$key]); 
  prev(YourArr); }