如何将数组嵌入另一数组且避免生成"0"索引?
解决PHP数组键值对合并到顶层而非嵌套的问题
你当前的问题是把$gallery数组直接作为元素添加到$params里,PHP会自动给它分配索引0,导致嵌套。要把$gallery的键值对合并到$params顶层,有以下几种简单方法:
方法1:使用数组展开语法(PHP 7.4及以上版本)
这是最简洁的写法,直接用...展开$gallery数组,把它的键值对直接合并到$params中:
// 先修正$gallery的语法错误:PHP数组键值对用=>而非: $gallery = [ "image_1" => "https://staticw.s3.amazonaws.com/object/12331231.jpg", "image_2" => "https://staticw.s3.amazonaws.com/object/12312312.jpg", ]; $params = [ "codpro" => $props[0]->codpro, "city_code" => $props[0]->city_code, "address" => $props[0]->address, "latitude" => $props[0]->latitude, "longitude" => $props[0]->longitude, ...$gallery // 展开$gallery的键值对 ];
方法2:使用array_merge函数
如果你的PHP版本低于7.4,可以用array_merge把两个数组合并,注意如果有重复键,后面的数组会覆盖前面的:
$gallery = [ "image_1" => "https://staticw.s3.amazonaws.com/object/12331231.jpg", "image_2" => "https://staticw.s3.amazonaws.com/object/12312312.jpg", ]; $baseParams = [ "codpro" => $props[0]->codpro, "city_code" => $props[0]->city_code, "address" => $props[0]->address, "latitude" => $props[0]->latitude, "longitude" => $props[0]->longitude, ]; $params = array_merge($baseParams, $gallery);
注意事项
- 你原来的
$gallery数组用了:来分隔键值对,这是JavaScript对象的写法,PHP里必须用=>,否则会报错,已经在上面的代码里修正了。 - 如果
$gallery和$baseParams有重复的键,合并后后面的数组($gallery)的键值会覆盖前面的,根据你的需求确认是否需要处理这种情况。
这样修改后,$params的结构就会和你期望的输出一致,image_1和image_2直接作为顶层键存在,不会嵌套在索引0的子数组里。
内容的提问来源于stack exchange,提问作者Esteban Suarez
相关产品推荐
相关产品推荐

