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

PHP中如何将数组项合并到已有数组的对应子元素中?

解决PHP数组对应元素合并的问题

嘿,我懂你遇到的麻烦啦!你现在是想把两个数组里对应位置的元素合并成一个,而不是把整个第二个数组当成单个元素塞进第一个数组末尾对吧?

问题根源

你之前用array_push($arrRows,$arrRows1),其实是把$arrRows1这个数组整体加到了$arrRows的最后一位,所以才出现了第三项是完整$arrRows1的奇怪结构。而你需要的是把$arrRows里的每个元素(包含totalp和mes)和$arrRows1里对应位置的元素(包含bonus)合并成一个数组。

解决方案

我们可以通过循环遍历数组,把对应位置的元素用array_merge合并起来,直接修改原数组的元素即可:

$arrRows = array(); 
while ($dados = $resultp->fetch_array(MYSQLI_ASSOC)) { 
    $arrRows[] = $dados;// 获取totalp和mes
} 

$arrRows1 = array(); 
while ($dados = $resultb->fetch_array(MYSQLI_ASSOC)) { 
    $arrRows1[] = $dados; // 获取bonus
} 

// 替换原来的array_push,改为循环合并对应元素
foreach ($arrRows as $key => &$row) {
    // 先检查$arrRows1是否有对应位置的元素,避免索引不存在报错
    if (isset($arrRows1[$key])) {
        // 合并当前行和对应位置的bonus数组
        $row = array_merge($row, $arrRows1[$key]);
    }
}

print_r($arrRows);

代码说明

  • 用foreach ($arrRows as $key => &$row)遍历数组,这里的&$row是引用传递,意味着我们可以直接修改原数组里的元素,不需要重新赋值。
  • array_merge($row, $arrRows1[$key])会把两个数组合并成一个,把bonus字段加到包含totalp和mes的数组里。
  • 加上isset($arrRows1[$key])的判断,是为了防止两个数组长度不一致时出现索引不存在的错误(比如如果$arrRows1比$arrRows短,后面的元素就不会强行合并不存在的bonus)。

这样运行后,你就能得到想要的结构:每个元素都同时包含totalp、mes和对应的bonus字段啦!

内容的提问来源于stack exchange,提问作者reemy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 06:43:47