首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >php array_merge关联数组

php array_merge关联数组
EN

Stack Overflow用户
提问于 2011-03-08 22:21:12
回答 7查看 31.5K关注 0票数 27

我尝试在关联数组的开头添加一个项目。我认为最好的方法是使用array_merge,但我得到了一些奇怪的结果。我从mysql数据库中获取产品的id和名称,并将其作为一个关联数组返回,如下所示(不是返回的实际数据,而是这个问题的样本数据,它表示数据的大致外观):

代码语言:javascript
复制
$products = array (1 => 'Product 1', 42 => 'Product 42', 100 => 'Product 100');

这将被发送到html助手,以创建一个将键与值关联的下拉列表,数组项的值被设置为下拉选择控件中的文本。我需要第一项类似于“请选择”,键值为0,所以我这样做了:

代码语言:javascript
复制
$products = array_merge(array(0 => "Select a product" ), $products);

生成的数组如下所示:

代码语言:javascript
复制
array(
  0 => 'Select a product', 
  1 => 'Product 1', 
  2 => 'Product 42', 
  3 => 'Product 100' 
);

而我真正想要的是不丢失关联数组的键。有人告诉我,你可以用我尝试过的方式正确地使用array_merge和关联数组,但是,我相信因为我的键是int,所以它没有将数组视为真正的关联数组,并按照上面的说明对它们进行压缩。

问题是:为什么array_merge函数要更改项的键?我能阻止它这样做吗?或者,有没有其他方法可以完成我想要做的事情,在数组的开头添加新项?

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2011-03-08 22:22:53

docs

如果要将数组元素从第二个数组追加到第一个数组,同时不覆盖第一个数组中的元素并且不重新索引,请使用+ array union运算符

在使用+联合运算符时,第一个数组参数中的键将被保留,因此颠倒参数顺序并使用联合运算符应该会执行所需的操作:

代码语言:javascript
复制
$products = $products + array(0 => "Select a product");
票数 55
EN

Stack Overflow用户

发布于 2011-03-08 22:31:21

只是为了好玩

代码语言:javascript
复制
$newArray = array_combine(array_merge(array_keys($array1),
                                      array_keys($array2)
                                     ),
                          array_merge(array_values($array1),
                                      array_values($array2)
                                     )
                         );
票数 6
EN

Stack Overflow用户

发布于 2011-03-08 22:33:10

array_merge将重新计算数字索引。因为您的关联数组使用了数字索引,所以它们将被重新编号。您可以在索引前面插入一个非数字字符,例如:

代码语言:javascript
复制
$products = array ('_1' => 'Product 1', '_42' => 'Product 42', '_100' => 'Product 100');

或者,您可以手动创建结果数组:

代码语言:javascript
复制
$newproducts = array (0 => "Select a product");
foreach ($products as $key => $value)
    $newproducts[$key] = $value;
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5233721

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档