Добрый день, столкнулся с такой проблемой. Есть ассоциативный массив.
К примеру.
$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] =>
)
Однако, вообще стоит задуматься, что есть порядок ключей в ассоциативном массиве, и имеет ли он в целом смысл и гарантирован ли при обходе
Комментариев нет:
Отправить комментарий