【问题标题】:Array Merge in For [PHP]For [PHP] 中的数组合并
【发布时间】:2019-06-14 18:16:19
【问题描述】:

X 次for 过程完成。每次添加新数组数据forprcess。

 $input_array = array("success"=>true ,'ab' => 2,'def' => 1);

for ($i = 0; $i <= 6;$i++) {
    $data = [
        'lg_' . $i => 'LG: T-' . $i
    ];
    $arrayMerging = array_merge($input_array, $data);
}

print_r($arrayMerging);

数组 ([success] => true, [ab] => 2 [def] => 1 [leg_6] => LG: T-6)

它只是添加了最后一部分 (6)。数组中不存在部分 1,2,3,4,5。可能是什么原因?

【问题讨论】:

    标签: php arrays merge push


    【解决方案1】:

    您只看到循环中的最后一个键的原因是结果/累加器数组 ($arrayMerging) 从未被分配,因此您在每次迭代时都从头开始。

    你的意思可能是这样的:

    <?php
    
    $input_array = ["success" => true ,'ab' => 2,'def' => 1];
    $arrayMerging = $input_array;
    
    for ($i = 0; $i <= 6; $i++) {
        $data = ["lg_$i" => 'LG: T-' . $i];
        $arrayMerging = array_merge($arrayMerging, $data);
    }
    
    print_r($arrayMerging);
    

    或更清晰的:

    <?php
    
    $input_array = ["success" => true , "ab" => 2, "def" => 1];
    $merged = $input_array;
    
    for ($i = 0; $i <= 6; $i++) {
        $merged["lg_$i"] = "LG: T-$i";
    }
    
    print_r($merged);
    

    我们直接分配属性的地方。

    输出:

    Array
    (
        [success] => 1
        [ab] => 2
        [def] => 1
        [lg_0] => LG: T-0
        [lg_1] => LG: T-1
        [lg_2] => LG: T-2
        [lg_3] => LG: T-3
        [lg_4] => LG: T-4
        [lg_5] => LG: T-5
        [lg_6] => LG: T-6
    )
    

    【讨论】:

    • 感谢您的帮助
    【解决方案2】:

    这是因为您没有将 result 合并回最终数组。试试这个:

    $input_array = array("success"=>true ,'ab' => 2,'def' => 1);
    
    for ($i = 0; $i <= 6;$i++) {
        $data = [
            'lg_' . $i => 'LG: T-' . $i
        ];
        $input_array = array_merge($input_array, $data);
    }
    
    print_r($input_array);
    

    另一个例子:http://sandbox.onlinephpfunctions.com/code/052c3edaca2e8ac7b819201eb5bb3b61d384bca5

    【讨论】:

    • 感谢您的帮助
    【解决方案3】:

    array_push 这样做,

    <?php
    $input_array = array("success"=>true ,'ab' => 2,'def' => 1);
    
    for ($i = 0; $i <= 6;$i++) {
        $data = [
            'lg_' . $i => 'LG: T-' . $i
        ];
        array_push($input_array, $data);
    }
    
    print_r($input_array);
    ?>
    

    演示: https://3v4l.org/CImYY

    根据评论:

    <?php
    $input_array = array("success"=>true ,'ab' => 2,'def' => 1);
    
    for ($i = 0; $i <= 6;$i++) {
        $data = [
            'lg_' . $i => 'LG: T-' . $i
        ];
      $input_array = array_merge($input_array, $data); // see this line
    }
    
      print_r($input_array);
    ?>
    

    演示: https://3v4l.org/R57v6

    【讨论】:

    • 数组出现在数组中。是否可以创建合并?
    • @J.Doe4 更新我的答案,再看看
    • 感谢您的帮助
    猜你喜欢
    • 1970-01-01
    • 2015-07-25
    • 2016-12-12
    • 1970-01-01
    • 1970-01-01
    • 2011-06-18
    • 2012-11-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多