将整个数组移到php中的一个位置

时间:2017-09-12 20:22:39

标签: php arrays key

例如:我有一个如下所示的数组: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,这不是我想要的。

我描述的可能吗?

2 个答案:

答案 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']