array_merge改变了键名

6

我得到了以下数组:

$arr = array(6 => 'Somedata', 7 => 'Somedata1', 8 => 'Somedata2');

问题在于,当我使用 array_merge( (array) "选择数据", $arr); 时,它会改变数组键为:

Array
(
    [0] => Not specified
    [1] => Somedata
    [2] => Somedata1
    [3] => Somedata2
)

有没有可能跳过array_merge键的处理,使输出结果如下:

Array
(
    [0] => Not specified
    [6] => Somedata
    [7] => Somedata1
    [8] => Somedata2
)

请展示代码。array_merge默认情况下会保留键名 - Peter
@EXQStudio 我的问题第二行就是代码,简单地使用array_merge((array)"Select the data",$arr),再加上一个print_r输出。 - Sapp
为什么要将字符串强制转换为数组?为什么不使用 Array("Select the data") - Peter
array_merge函数会保留第一个数组的键名,如果你想得到你想要的结果,不妨尝试交换数组的位置,像这样:array_merge($arr, (array) "选择数据"); - Fluffeh
@EXQStudio 为什么不呢?可以参考http://php.net/manual/en/function.array-merge.php中的示例#1,它是允许的,并且运行良好。 - Sapp
1个回答

11

使用+运算符将两个数组合并为一个:

$arr = array(6 => 'Somedata', 7 => 'Somedata1', 8 => 'Somedata2');

$result = (array)'Select the data' + $arr;

var_dump($result);

结果:

array(4) {
  [0]=>
  string(15) "Select the data"
  [6]=>
  string(8) "Somedata"
  [7]=>
  string(9) "Somedata1"
  [8]=>
  string(9) "Somedata2"
}

不过要小心,如果这些数组有相同的键,它可能会覆盖数据。尝试使用 $arr = array(0 => 'Somedata', 7 => 'Somedata1', 8 => 'Somedata2'); 作为输入运行它。 - Fluffeh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接