У меня есть массив
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]; }
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));
Трудно вернуть правильный результат во втором методе, если искомый ключ не существует. Используйте с осторожностью.
Вы можете использовать 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
$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>"); }
<?php $users_emails = array( 'Spence' => 'spence@someplace.com', 'Matt' => 'matt@someplace.com', 'Marc' => 'marc@someplace.com', 'Adam' => 'adam@someplace.com', 'Paul' => 'paul@someplace.com'); $current = 'Paul'; $keys = array_keys($users_emails); $ordinal = (array_search($current,$keys)+1)%count($keys); $next = $keys[$ordinal]; echo $next; ?>
Вы можете печатать так:
foreach(YourArr as $key => $val) { echo next(YourArr[$key]); prev(YourArr); }