我尝试在关联数组的开头添加一个项目。我认为最好的方法是使用array_merge,但我得到了一些奇怪的结果。我从mysql数据库中获取产品的id和名称,并将其作为一个关联数组返回,如下所示(不是返回的实际数据,而是这个问题的样本数据,它表示数据的大致外观):
$products = array (1 => 'Product 1', 42 => 'Product 42', 100 => 'Product 100');
这将被发送到html助手,以创建一个将键与值关联的下拉列表,数组项的值被设置为下拉选择控件中的文本。我需要第一项类似于“请选择”,键值为0,所以我这样做了:
$products = array_merge(array(0 => "Select a product" ), $products);
生成的数组如下所示:
array(
0 => 'Select a product',
1 => 'Product 1',
2 => 'Product 42',
3 => 'Product 100'
);
而我真正想要的是不丢失关联数组的键。有人告诉我,你可以用我尝试过的方式正确地使用array_merge和关联数组,但是,我相信因为我的键是int,所以它没有将数组视为真正的关联数组,并按照上面的说明对它们进行压缩。
问题是:为什么array_merge函数要更改项的键?我能阻止它这样做吗?或者,有没有其他方法可以完成我想要做的事情,在数组的开头添加新项?
https://stackoverflow.com/questions/5233721
复制相似问题