Php 如何将2个数组与循环位置合并
我有两个阵列:Php 如何将2个数组与循环位置合并,php,arrays,Php,Arrays,我有两个阵列: $arr1 = array('1', '2', '3', '4', '5', '6', '7'); $arr2 = array('a', 'b', 'c', 'd', 'e'); 我想将$arr2循环到$arr1中,但如果$arr1的长度小于算法要求的长度,则只需根据需要使用尽可能多的$arr2元素 我想达到这个结果: $arr2 = array('1', '2', '3', 'a', '4', '5', '6', 'b', '7'); 我已经试过: $count = cei
$arr1 = array('1', '2', '3', '4', '5', '6', '7');
$arr2 = array('a', 'b', 'c', 'd', 'e');
我想将$arr2循环到$arr1中,但如果$arr1的长度小于算法要求的长度,则只需根据需要使用尽可能多的$arr2元素
我想达到这个结果:
$arr2 = array('1', '2', '3', 'a', '4', '5', '6', 'b', '7');
我已经试过:
$count = ceil(count($arr1) / 3) - 1;
for ($i = 0; $i < $count; $i++) {
array_splice($arr1, 3, 0, $arr2);
}
您在正确的轨道上,但需要使拼接点为$i+1*3,并且只拼接$arr2[$i]值,而不是整个阵列。此外,由于向数组中插入值会导致索引发生更改,因此需要从头开始向后操作
$arr1 = array('1', '2', '3', '4', '5', '6', '7');
$arr2 = array('a', 'b', 'c', 'd', 'e');
$count = ceil(count($arr1) / 3) - 1;
for ($i = $count - 1; $i >= 0; $i--) {
array_splice($arr1, ($i + 1) * 3, 0, $arr2[$i]);
}
print_r($arr1);
输出:
Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => a
[4] => 4
[5] => 5
[6] => 6
[7] => b
[8] => 7
)
array (
0 => '1',
1 => '2',
2 => '3',
3 => 'a',
4 => '4',
5 => '5',
6 => '6',
7 => 'b',
8 => '7',
)
请注意,根据$arr1是3个元素的倍数时想要实现的结果,您可能需要进行更改
$count = ceil(count($arr1) / 3) - 1;
到
您在正确的轨道上,但需要使拼接点为$i+1*3,并且只拼接$arr2[$i]值,而不是整个阵列。此外,由于向数组中插入值会导致索引发生更改,因此需要从头开始向后操作
$arr1 = array('1', '2', '3', '4', '5', '6', '7');
$arr2 = array('a', 'b', 'c', 'd', 'e');
$count = ceil(count($arr1) / 3) - 1;
for ($i = $count - 1; $i >= 0; $i--) {
array_splice($arr1, ($i + 1) * 3, 0, $arr2[$i]);
}
print_r($arr1);
输出:
Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => a
[4] => 4
[5] => 5
[6] => 6
[7] => b
[8] => 7
)
array (
0 => '1',
1 => '2',
2 => '3',
3 => 'a',
4 => '4',
5 => '5',
6 => '6',
7 => 'b',
8 => '7',
)
请注意,根据$arr1是3个元素的倍数时想要实现的结果,您可能需要进行更改
$count = ceil(count($arr1) / 3) - 1;
到
您只需插入$arr2的元素,或插入$arr1的元素2
您只需插入$arr2的元素,或插入$arr1的元素2
在每三个索引处,拼接另一个数组的一个成员。请注意,原始阵列的大小发生了变化,因此我们需要在每个拼接处相应地调整插入的关键点
<?php
for($i=3, $s=0, $c=count($arr1); $i<$c; $i+=3, $s++) {
array_splice($arr1, $i+$s, 0, $arr2[$s]);
}
var_export($arr1);
同样,省略循环的语句
for(
$i=3, $s=0, $c=count($arr1);
$i<$c;
array_splice($arr1, $i+$s, 0, $arr2[$s++]), $i+=3
);
在每三个索引处,拼接另一个数组的一个成员。请注意,原始阵列的大小发生了变化,因此我们需要在每个拼接处相应地调整插入的关键点
<?php
for($i=3, $s=0, $c=count($arr1); $i<$c; $i+=3, $s++) {
array_splice($arr1, $i+$s, 0, $arr2[$s]);
}
var_export($arr1);
同样,省略循环的语句
for(
$i=3, $s=0, $c=count($arr1);
$i<$c;
array_splice($arr1, $i+$s, 0, $arr2[$s++]), $i+=3
);
@别担心,我很高兴能帮上忙。请注意,克里斯的回答也很好,可能会更有效。不用担心,我很高兴能帮上忙。请注意,克里斯的答案也很好,可能更有效。它会打印两次。您的意思可能是$result[]=$arr2[intval$key+1/3-1];它会打印两次。您的意思可能是$result[]=$arr2[intval$key+1/3-1];从索引3开始,绕过if。从索引3开始,绕过if。