Страницы

Поиск по вопросам

воскресенье, 9 июня 2019 г.

Взять следующий элемент ассоциативного массива на PHP

Добрый день, столкнулся с такой проблемой. Есть ассоциативный массив.
К примеру.
$foo = array('x'=>'x_val','y'=>'y_val','z'=>'z_val');
И есть цикл foreach
foreach ($foo as $key=>$val){ //Тут какая то логика }
Нужно взять в текущей итерации следующий $val. Ну или $key
Как можно этого добиться ?


Ответ

проще всего, будет использовать вспомогательный массив соответствий
$foo = array('x'=>'x_val', 'y'=>'y_val', 'z'=>'z_val');
$keys = array_keys($foo); array_shift($keys); $matches = array_combine(array_keys($foo), $keys + [-1 => null]);
foreach($foo as $k => $v){ $nextKey = $matches[$k]; print_r([$k, $nextKey]); }
результат
Array( [x] => y [y] => z [z] => )
Однако, вообще стоит задуматься, что есть порядок ключей в ассоциативном массиве, и имеет ли он в целом смысл и гарантирован ли при обходе

Комментариев нет:

Отправить комментарий