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);
?>
根据评论:
<?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);
?>
这是因为您没有将 结果 合并回最终数组。试试这个:
$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
)
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);
?>
根据评论:
<?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);
?>
这是因为您没有将 结果 合并回最终数组。试试这个:
$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
)