我正在尝试将一个项目添加到关联数组的开头。我认为最好的方式是使用array_merge,但我有一些奇怪的后果。我从mysql数据库获取产品的id和Name,并将它作为关联数组返回,就像这样(不是实际的数据回来,而是用于表示数据看起来像这个问题的示例数据):
$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函数更改项的键?我可以保持这样做吗?或者我有另一种方式来完成我想要做的,在数组的开头添加新的项目?