Получить следующий элемент массива, используя ключ 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>");
}
Ответ 4
<?php
$users_emails = array(
'Spence' => '[email protected]',
'Matt' => '[email protected]',
'Marc' => '[email protected]',
'Adam' => '[email protected]',
'Paul' => '[email protected]');
$current = 'Paul';
$keys = array_keys($users_emails);
$ordinal = (array_search($current,$keys)+1)%count($keys);
$next = $keys[$ordinal];
echo $next;
?>
Ответ 5
Вы можете печатать следующим образом: -
foreach(YourArr as $key => $val)
{ echo next(YourArr[$key]);
prev(YourArr); }