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);数组(success => true,ab => 2 def => 1 leg_6 => LG: T-6)
它只是增加了最后一部分(6)。数组中不存在1,2,3,4,5部分。可能是什么原因?
发布于 2019-06-14 18:28:04
您只看到循环中的最后一个键的原因是结果/累加器数组($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
)发布于 2019-06-14 18:27:38
这是因为您没有将结果合并回最终数组。试试这个:
$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
发布于 2019-06-14 18:27:03
用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);
?>如评论所述:
<?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://stackoverflow.com/questions/56603310
复制相似问题