php array_merge 关联数组
2022-08-30 15:54:44
我正在尝试将一个项目附加到关联数组的开头。我认为最好的方法是使用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与关联数组,但是,我相信因为我的键是ints,因此它不会将数组视为真正的关联数组,而是按上图进行压缩。
问题是:为什么array_merge功能会更改项目的键?我可以阻止它这样做吗?或者,是否有另一种方法可以让我完成我正在尝试执行的操作,即在数组的开头添加新项?