我正在尝试将一个项目添加到关联数组的开头。我认为最好的方法是使用 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 与关联数组一起使用,但是,我相信因为我的键是整数,所以它不会将数组视为真正的关联数组,并如上图所示压缩它们。
问题是:为什么 array_merge 函数会改变项目的键?我可以阻止它这样做吗?或者是否有另一种方法可以让我完成我想要做的事情,在数组的开头添加新项目?