PHP后一个数是前两个的和,php – 显示来自一个数组的前4个元素和来自另一个数组的前1个元素,直到存在数组元素...

我试图通过显示第一个数组中的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

现在我尝试了这段代码,但它没有显示第二个数组中的所有元素.

$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()将所有元素作为一维数组.

$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

)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值