Php 使用阵列进行高级阵列合并

Php 使用阵列进行高级阵列合并,php,arrays,Php,Arrays,我需要一些帮助来合并2个数组,但要使用如下所示的特定模式。在逻辑方面的任何帮助都将不胜感激 案例:我有两个数组 $arr1 = ['a','b','c','d','e','f','g','h','i','j'] $arr2 = [1,2,3,4,5,6,7,8] 我想将这2个合并到第3个(新)阵列中,但使用以下模式: **字母,字母,数字,数字,字母,字母,字母,数字,数字** 所以是2个字母,2个数字,3个字母,2个数字(然后重复)。例如,如果我把这个逻辑应用到上面的例子中,我们会得到 $a

我需要一些帮助来合并2个数组,但要使用如下所示的特定模式。在逻辑方面的任何帮助都将不胜感激

案例:我有两个数组

$arr1 = ['a','b','c','d','e','f','g','h','i','j']
$arr2 = [1,2,3,4,5,6,7,8]
我想将这2个合并到第3个(新)阵列中,但使用以下模式: **字母,字母,数字,数字,字母,字母,字母,数字,数字**

所以是2个字母,2个数字,3个字母,2个数字(然后重复)。例如,如果我把这个逻辑应用到上面的例子中,我们会得到

$arr3 = ['a', 'b', 1, 2, 'c', 'd', 'e', 3, 4, 'f', 'g', 5, 6, 'h', 'i', 'j', 7, 8
我希望有人能在实现这一目标的逻辑/总体方向上帮助我

仅供参考,我到目前为止的代码只处理合并两个具有交替值的数组:

//Empty array to hold new objects
$newArray = array();

foreach ($arr1 as $a1) {
    if (count($arr1)==0) {
        break;
    }
    array_push($newArray, array_pop($arr1));
    if (count($arr2)!=0) {
        array_push($newArray, array_pop($arr2));
    }
}

编辑:我的请求似乎冒犯了一些用户。我已经修改了这个问题,以询问大致方向,并帮助了解数组逻辑。再次感谢您的回复。

我不知道它是否合适,但我会做的是将
$arr1
切割成2,然后再切割成3,然后
$arr2
正常切割成2,然后正常合并。像这样:

$arr1 = ['a','b','c','d','e','f','g','h','i','j'];
$arr2 = [1,2,3,4,5,6,7,8];
$i = 0;
$temp1 = array();
while(count($arr1) > 0) {
    // cut two then three
    $num = ($i & 1) ? 3 : 2; 
    $temp1[] = array_splice($arr1, 0, $num);
    $i++;
}

$temp2 = array_chunk($arr2, 2); // cut by twos
$arr3 = array();
foreach($temp1 as $key => $val) {
    // merge and merge
    $arr3 = array_merge($arr3, array_merge($val, $temp2[$key]));
}
echo '<pre>';
print_r($arr3);
$arr1=['a','b','c','d','e','f','g','h','i','j'];
$arr2=[1,2,3,4,5,6,7,8];
$i=0;
$temp1=array();
而(计数($arr1)>0){
//切两个然后切三个
$num=($i&1)?3:2;
$temp1[]=阵列拼接($arr1,0,$num);
$i++;
}
$temp2=array_chunk($arr2,2);//一分为二
$arr3=数组();
foreach($temp1作为$key=>$val){
//合并与合并
$arr3=数组合并($arr3,数组合并($val,$temp2[$key]);
}
回声';
印刷费(3美元);

因为你听起来确实像一个程序员(而不是一个寻找快速解决方案的新手),你只需要逻辑和方向,所以你可以做到这一点

免责声明:这只是给你一个想法,当然它可以优化,代码可以减少,但这是可行的。这段代码不检查数组中的元素数量是否足以满足逻辑,您可以随时添加它们

Array
(
    [0] => a
    [1] => b
    [2] => 1
    [3] => 2
    [4] => c
    [5] => d
    [6] => e
    [7] => 3
    [8] => 4
    [9] => f
    [10] => g
    [11] => 5
    [12] => 6
    [13] => h
    [14] => i
    [15] => j
    [16] => 7
    [17] => 8
)

我将用PHP来做,但请随意用任何语言发布-这不是它的工作原理,你需要有一个特定的问题来寻求帮助,无论是在c语言中还是在c语言中,你只需使用一个for循环,每次迭代都从两个列表中获取两个条目。谢谢你的注释,尽管我不理解反对票。我之所以打开这篇文章,是因为我个人用JavaScript、PHP和C#编写,因此发表了评论。没有必要成为精英主义者,投票否决我,因为我没有特别向语言A或B寻求帮助。编程更多的是关于问题和解决方案,而不是语法。我已经向你提供了逻辑,所以我不知道我是如何成为精英主义者的。你表达问题的方式是作为请求而不是问题。如果您需要它的代码,那么它位于smalltalk
arr1 DOWITINDEX中:[:a:i | newArr add:a.arr2 size这是一个很好的问题,只是它的格式与这里通常的格式不同。这可能是否决票出现的唯一原因。感谢您的指导,这肯定会有所帮助。我将创建一些情况,说明一个数组比另一个数组长。将在此处发布结果。再次感谢:)谢谢你的提示,这是一个很好的使用
array\u chunk()
的方法,我没有考虑过。
Array
(
    [0] => a
    [1] => b
    [2] => 1
    [3] => 2
    [4] => c
    [5] => d
    [6] => e
    [7] => 3
    [8] => 4
    [9] => f
    [10] => g
    [11] => 5
    [12] => 6
    [13] => h
    [14] => i
    [15] => j
    [16] => 7
    [17] => 8
)