Например: у меня есть массив, который выглядит так: 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 баллов, чего я не хочу.
Возможно ли то, что я описываю?
Вам не нужна петля. Чтобы сдвинуть массив столько раз, сколько его размер, вы можете использовать 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 )
Линия
array_unshift($chars, 0);
достаточно без всякой петли:
$chars = ['a', 'b', 'c'];
array_unshift($chars, 0);
print_r($chars); // [0, 'a', 'b', 'c']