gpt4 book ai didi

php array_merge 关联数组

转载 作者:IT王子 更新时间:2023-10-28 23:46:33 25 4
gpt4 key购买 nike

我正在尝试将一个项目添加到关联数组的开头。我认为最好的方法是使用 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 函数会改变项目的键?我可以阻止它这样做吗?或者是否有另一种方法可以让我完成我正在尝试做的事情,在数组的开头添加新项目?

最佳答案

来自 docs :

If you want to append array elements from the second array to the first array while not overwriting the elements from the first array and not re-indexing, use the + array union operator

使用 + 联合运算符时会保留第一个数组参数的键,因此颠倒参数的顺序并使用联合运算符应该可以满足您的需要:

$products = $products + array(0 => "Select a product");

关于php array_merge 关联数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5233721/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com