You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将数组嵌入另一数组且避免生成"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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 22:19:21