我尝试将一个元素添加到关联数组的开头。我认为最好的方法是使用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与关联数组,但是我认为由于我的键是整数,它没有将数组视为真正的关联数组,并像上面所示一样压缩它们。
问题是:为什么array_merge函数会更改项的键?我可以防止它这样做吗?还是有其他方法可以实现我想要做的事情,将新项目添加到数组的开头?