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

PHP关联数组合并问题:使用array_push时数据被覆盖

解决array_push覆盖值的问题

我来帮你捋捋代码里的问题哈~你遇到的覆盖问题,根源在这两个地方:

  • 你在循环内部每次都重新初始化了空数组$a = array();,这就导致每次循环都是从头开始往空数组里加元素,之前循环的结果自然留不住;
  • array_push()的返回值是数组新的长度(数字),不是你想要的数组本身,所以$result[$i] = array_push($a, $data);这行存到$result里的其实是数字,不是你构建的$data数组。

修正后的代码方案

你可以直接往$result数组里追加元素,或者把$a的初始化移到循环外面,这里给你两种简洁的写法:

方案一:直接构建目标数组(更简洁)

<?php 
$tem = ["blue","ss"]; 
$len = count($tem); 
$result = []; // 先初始化目标数组

for($i=0;$i<$len;$i++){ 
    $data = [ 
        'code' => $tem[$i], 
        'discount_type' => 'percent', 
    ]; 
    $result[] = $data; // 直接往$result里追加元素,不用array_push也可以
} 

print_r($result);
?>

方案二:保留$a变量的写法(如果需要中间数组)

<?php 
$tem = ["blue","ss"]; 
$len = count($tem); 
$a = []; // 把$a的初始化移到循环外面
$result = [];

for($i=0;$i<$len;$i++){ 
    $data = [ 
        'code' => $tem[$i], 
        'discount_type' => 'percent', 
    ]; 
    array_push($a, $data); // 往同一个$a里追加元素
    $result[$i] = $a; // 这里存的是完整的$a数组,如果需要的话
} 

print_r($a); // 最终的合并数组
print_r($result); // 每个循环阶段的$a数组
?>

运行结果说明

方案一运行后,$result会是你想要的合并数组:

Array
(
    [0] => Array
        (
            [code] => blue
            [discount_type] => percent
        )

    [1] => Array
        (
            [code] => ss
            [discount_type] => percent
        )

)

这样就不会出现覆盖的问题啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 07:52:28