合并 2 个数组:不要更改索引并在间隙中按顺序添加第二个值
Merge 2 arrays: don't change indexes and add the 2nd values in order in the gaps
我有两个数组。我希望我不更改第一个索引,而第二个索引按顺序添加到缺失索引的空白处:
$a = array(
0 => 9,
2 => 13
);
$b = array(
1 => 10,
2 => 11,
3 => 12,
4 => 1
);
我想要这个结果:
$ab = array(
0 => 9,
1 => 10,
2 => 13,
3 => 11,
4 => 12,
5 => 1
);
我试过这个:
$ab = $a+$b; // Keeps indexes, but removes key 2 from array $ b
$ab = array_merge($a, $b); // Change indexes
$ab = array_unique(array_merge($a,$b)); // Change indexes
$ab = array_merge($a, array_diff($b, $a)); // Change indexes
看起来不像是简单的合并。您或许可以尝试 运行 循环遍历第二个数组,然后慢慢地将元素添加到第一个数组适合的位置
function mergeArrays($a, $b)
{
foreach ($b as $i => $v) {
while (array_key_exists($i, $a)) {
$i++;
}
$a[$i] = $v;
}
ksort($a);
return $a;
}
foreach ($a as $k => $v ) {
$new_array[$k] = $v ;
}
foreach ($b as $k => $v ) {
$new_array[$k] = $v ;
}
echo print_r(new_array);
希望这个用智能手机制作的脚本能奏效
遍历 $b
,将元素复制到 $a
。但如果索引已经存在,则增加调整以获得新索引。
function mergeArrays($a, $b) {
$adjust = 0;
foreach ($b as $i => $val) {
while (isset($a[$i + $adjust])) {
$adjust++;
}
$a[$i + $adjust] = $val;
}
ksort($a); // Put in order by new indexes
return $a;
}
我有两个数组。我希望我不更改第一个索引,而第二个索引按顺序添加到缺失索引的空白处:
$a = array(
0 => 9,
2 => 13
);
$b = array(
1 => 10,
2 => 11,
3 => 12,
4 => 1
);
我想要这个结果:
$ab = array(
0 => 9,
1 => 10,
2 => 13,
3 => 11,
4 => 12,
5 => 1
);
我试过这个:
$ab = $a+$b; // Keeps indexes, but removes key 2 from array $ b
$ab = array_merge($a, $b); // Change indexes
$ab = array_unique(array_merge($a,$b)); // Change indexes
$ab = array_merge($a, array_diff($b, $a)); // Change indexes
看起来不像是简单的合并。您或许可以尝试 运行 循环遍历第二个数组,然后慢慢地将元素添加到第一个数组适合的位置
function mergeArrays($a, $b)
{
foreach ($b as $i => $v) {
while (array_key_exists($i, $a)) {
$i++;
}
$a[$i] = $v;
}
ksort($a);
return $a;
}
foreach ($a as $k => $v ) {
$new_array[$k] = $v ;
}
foreach ($b as $k => $v ) {
$new_array[$k] = $v ;
}
echo print_r(new_array);
希望这个用智能手机制作的脚本能奏效
遍历 $b
,将元素复制到 $a
。但如果索引已经存在,则增加调整以获得新索引。
function mergeArrays($a, $b) {
$adjust = 0;
foreach ($b as $i => $val) {
while (isset($a[$i + $adjust])) {
$adjust++;
}
$a[$i + $adjust] = $val;
}
ksort($a); // Put in order by new indexes
return $a;
}