我试图通过显示第一个数组中的4个第一个元素和第二个数组中的1个第一个元素来创建第三个数字数组,依此类推.
例:
A1 { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 21, 22, 23, 24, 25 }
A2 {11, 12, 13, 14, 15, 16, 17, 18, 19, 20 }
结果应该是:
A3 { 1, 2, 3, 4, 11, 5, 6, 7, 8, 12, 9, 10, 21, 22, 13, ... }
└───┬────┘ ↑↑ └───┬────┘ ↑↑ └─────┬─────┘ ↑↑
A1 A2 A1 A2 A1 A2
现在我尝试了这段代码,但它没有显示第二个数组中的所有元素.
<?php
$array = array(1, 2, 3, 4, 5,6,7,8,9,10);
$array2 = array(11, 12, 13, 14, 15 ,16,17,18,19,20);
$temp = 0;
foreach ($array as $key => $item)
{
echo $item;
if(($key+1) % 4 == '0')
{
echo $array2[$temp];
$temp++;
}
}
?>
最佳答案 说明
在这里,我首先将第一个数组分为4个元素的每个部分,第二个部分为1个部分,分别为array_chunk()
,如下所示:
//Array one
Array (
Array (
//4 array elements
)
//...
)
//Array two
Array (
Array (
//1 array elements
)
//...
)
然后你可以使用array_map()
一次遍历两个数组,并将这两个数组与array_merge()
合并在一起.由于两个数组中的元素数量可能不均匀,我只需检查is_array(),如果我们仍然有一个包含要合并的元素的数组或如果我们必须为array_merge()使用一个空数组.
所以在array_map()之后我们得到一个二维数组,每个subArray包含来自第一个数组的4个元素和来自第二个数组的1个元素,如下所示:
//Array
Array (
Array (
//4 array elements from array one
//1 array elements from array two
)
//...
)
然后我们可以使用call_user_func_array()
结合array_merge()将所有元素作为一维数组.
码
<?php
$array = array(1, 2, 3, 4, 5,6,7,8,9,10);
$array2 = array(11, 12, 13, 14, 15 ,16,17,18,19,20);
$result = call_user_func_array("array_merge", array_map(function($arrayOne, $arrayTwo){
return array_merge(is_array($arrayOne) ? $arrayOne : [], is_array($arrayTwo) ? $arrayTwo : []);
}, array_chunk($array, 4), array_chunk($array2, 1)));
print_r($result);
?>
输出:
Array (
[0] => 1
[1] => 2
[2] => 3
[3] => 4
[4] => 11
[5] => 5
[6] => 6
[7] => 7
[8] => 8
[9] => 12
[10] => 9
[11] => 10
[12] => 13
[13] => 14
[14] => 15
[15] => 16
[16] => 17
[17] => 18
[18] => 19
[19] => 20
)