例如:我有一个如下所示的数组: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个B,这不是我想要的。
我描述的可能吗?
答案 0 :(得分:3)
您不需要循环。要将数组移动与数组大小相同的次数,您可以使用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 )
答案 1 :(得分:2)
行
array_unshift($chars, 0);
就足够了,没有任何循环:
$chars = ['a', 'b', 'c'];
array_unshift($chars, 0);
print_r($chars); // [0, 'a', 'b', 'c']