Или вы можете использовать временный массив, а затем удалить реальный, если хотите изменить его во время цикла:
$array = array(0 => 'a', 1 => 'b', 2 => 'c');
$temp_array = $array[1];
unset($array[1]);
array_unshift($array , $temp_array);
вывод будет:
array(0 => 'b', 1 => 'a', 2 => 'c')
и когда вы делаете это в цикле, вы должны очистить $temp_array
после добавления элемента в массив.