使用Union运算符插入数组的开头 - 新元素是覆盖数组的(先前)第一个元素

时间:2016-12-22 14:16:12

标签: php arrays associative-array

以下SSCCE打印:

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

我想要的是:

我想要的是在数组的开头插入值为"flat"的元素,即我希望"flat"插入索引0,其余的元素应该向右移动一个位置,以便为数组开头的插入提供自由位置。

所以我尝试使用union运算符。 source

我得到了什么:

但实际发生的是数组的第一个元素 "id" 被新插入的元素覆盖/替换。

问题是为什么会发生这种情况,我该怎么做才能实现我的需求?

$array = array(
  0 => "id",
  1 => "A",
  2 => "B",
  3 => "C",
  4 => "D",
  5 => "E",
  6 => "F",
  7 => "G",
  8 => "H",
  9 => "I",
  10 => "J"
);

$arrayNew = array("flat") + $array;

print_r($array_new);

3 个答案:

答案 0 :(得分:2)

从手册Array Operators

  

+运算符返回附加到左侧数组的右侧数组;对于存在于两个数组中的键,将使用左侧数组中的元素,并且将忽略右侧数组中的匹配元素

尝试array_unshift()修改数组:

array_unshift($array, array("flat"));

array_merge()

$arrayNew = array_merge(array("flat"), $array);

答案 1 :(得分:1)

使用array_merge()

$array = array(
  0 => "id",
  1 => "A",
  2 => "B",
  3 => "C",
  4 => "D",
  5 => "E",
  6 => "F",
  7 => "G",
  8 => "H",
  9 => "I",
  10 => "J"
);

$arrayNew = array_merge(array("flat"), $array);

print_r($arrayNew);
  

数组([0] => flat [1] => id [2] => A [3] => B [4] => C [5] => D [6] => E [7] => F [8] => G [9] => H [10] => I [11] => J)

答案 2 :(得分:0)

使用array_unshift将元素添加到数组的开头。

$ arr = array([0] => FLAT 1 => A [2] => B [3] => C [4] => D [5] => ; E [6] => F [7] => G [8] => H [9] => I [10] => J);

array_unshift($ arr," flat");

php array_unshift manual