For [PHP] 中的数组合并

Array Merge in For [PHP]

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

 $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);

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

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

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

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

$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

您在循环中只看到最后一个键的原因是 result/accumulator 数组 ($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
)