Переместить весь массив на одну позицию в переполнении стека

Например: у меня есть массив, который выглядит так: Array ( [0] => A [1] => B [2] => C [3] => D [4] => E [5] => F). и так далее..

Я хочу сдвинуть весь массив на 1 вправо, чтобы он выглядел так: ( [0] => 0 [1] => A [2] => B [3] => C [4] => D [5] => E [6] => F). и так далее….

Редактировать: мой плохой. Я не правильно сформулировал свой вопрос. Я надеюсь, что не путаю людей, пытающихся прояснить ситуацию. Я хотел бы продолжить толкать массив до конца длины массива. Например, $ len равно 7. Я хотел бы выполнить действие с массивом, прежде чем переходить к следующей позиции. Так это выглядит так:

Array ( [0] => 0 [1] => 0 [2] => 0 [3] => 0 [4] => 0 [5] => 0 [6] => A).

Моя первая попытка решить эту проблему — создать цикл for:

for ($i = 0; $i < $len; $i++) {
echo $chars[$i + 1];
array_unshift($chars, 0);
}

Мой цикл дает мне 7 баллов, чего я не хочу.

Возможно ли то, что я описываю?

1

Решение

Вам не нужна петля. Чтобы сдвинуть массив столько раз, сколько его размер, вы можете использовать array_fill + array_merge:

$arr = array('A', 'B', 'C', 'D', 'E', 'F'); $len = count($arr);
$tmp = array_fill(0, $len, 0);
$arr = array_merge($tmp, $arr);

Выход:

Array
(
[0] => 0
[1] => 0
[2] => 0
[3] => 0
[4] => 0
[5] => 0
[6] => A
[7] => B
[8] => C
[9] => D
[10] => E
[11] => F
)


Если вам просто нужно сдвинуться один раз, используйте его так:

$arr = array('A', 'B', 'C', 'D', 'E', 'F');
array_unshift($arr, 0); // adds 0 to the first item
// array_pop($arr); // you can remove the last one, if needed

Вывод (удаление последнего элемента):

Array
(
[0] => 0
[1] => A
[2] => B
[3] => C
[4] => D
[5] => E
)

Если ты хочешь добавить более одного и они разные, вы также можете использовать array_merge:

$arr = array('A', 'B', 'C', 'D', 'E', 'F');
$arr = array_merge(array(0, 'foo', 'bar'), $arr);
// Output: Array ( [0] => 0 [1] => foo [2] => bar [3] => A [4] => B [5] => C [6] => D [7] => E [8] => F )
3

Другие решения

Линия

array_unshift($chars, 0);

достаточно без всякой петли:

$chars = ['a', 'b', 'c'];
array_unshift($chars, 0);
print_r($chars);  // [0, 'a', 'b', 'c']
2

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector