Php 合并并映射两个数组

Php 合并并映射两个数组,php,arrays,foreach,array-push,Php,Arrays,Foreach,Array Push,我有一个需要合并的两个数组的问题,其中第一个数组包含一个活动名称列表(page_data),如 以及另一个包含活动潜在客户数量的阵列。但此数组包含的密钥数将是活动数组的两倍,如下所示: [0 => 222, 1 => 342, 2 => 71, 3 => 33, 4 => 43, 5 => 665] 它包含两倍多的键,因为它将从两种不同的形式获取线索,因此键0和键3的值将用于活动1,键2和键4的值将用于活动2。永远都是这样。如果有5个活动,Lead数组将有1

我有一个需要合并的两个数组的问题,其中第一个数组包含一个活动名称列表(page_data),如

以及另一个包含活动潜在客户数量的阵列。但此数组包含的密钥数将是活动数组的两倍,如下所示:

[0 => 222, 1 => 342, 2 => 71, 3 => 33, 4 => 43, 5 => 665]
它包含两倍多的键,因为它将从两种不同的形式获取线索,因此
键0
键3
的值将用于活动1,
键2
键4
的值将用于活动2。永远都是这样。如果有5个活动,Lead数组将有10个键,
键0
键5
将用于活动1,
键1
键6
将用于活动2,等等

然后我有一段代码要组合(推送):

这将使和数组看起来像:

["campaign 1" => 222, "campaign 2" => 342, "campaign 3" => 71]
但这只需要密钥0,1,2,因此密钥3,4,5不在数组中

我想要的是引线阵列中的键0和键3、键1和键4等组合在一起,以便新引线阵列

[0 => 255, 1 => 386, 2 => 736]
然后我可以将其与活动数组结合,因为两个数组中的键数现在将匹配,这将为我提供一个如下所示的数组

["campaign 1" => 255, "campaign 2" => 386, "campaign 3" => 736]
使用该函数分割第二个数组,将很容易求和值

使用此函数时,数组将拆分为两个数组。在第一个数组中,值为0、1、2,在第二个数组中,值为3、4、5。现在,使用键遍历第一个数组,您将可以访问值对:0-3、1-4、2-5

查看此代码:

<?php

$array1 = [0 => "Campaign 1", 1 => "Campaign 2", 2 => "Campaign 3"];
$array2 = [0 => 222, 1 => 342, 2 => 71, 3 => 33, 4 => 43, 5 => 665];

$chunkedArray2 = array_chunk($array2, count($array1), false);

$result = [];
foreach($array1 as $key => $value) {
    $result[$value] = $chunkedArray2[0][$key] + $chunkedArray2[1][$key];
}

var_dump($result);
试试这个

$result = json_decode($result);
$count = count($result);
$final = array();
foreach($result as $key => $value){
  $final[$value] = $pages["page_data"][$key] + $pages["page_data"][$key+$count];
}
var_dump($final);

@aslawin方法可以通过一些功能轻松实现

$array1 = [0 => "Campaign 1", 1 => "Campaign 2", 2 => "Campaign 3"];
$array2 = [0 => 222, 1 => 342, 2 => 71, 3 => 33, 4 => 43, 5 => 665];

$res = array_combine($array1, 
           array_map(function($i1, $i2) { return $i1+$i2; },
                 ...array_chunk($array2, count($array1))))

我建议对如此复杂的数组使用
for()
而不是
foreach()
,以保持简单和易于处理。您期望的输出是什么?你的问题在某些地方不清楚。除了@RedBottle的评论,似乎你需要模运算符。。。
Array
(
    [Campaign 1] => 255
    [Campaign 2] => 385
    [Campaign 3] => 736
)
$result = json_decode($result);
$count = count($result);
$final = array();
foreach($result as $key => $value){
  $final[$value] = $pages["page_data"][$key] + $pages["page_data"][$key+$count];
}
var_dump($final);
$array1 = [0 => "Campaign 1", 1 => "Campaign 2", 2 => "Campaign 3"];
$array2 = [0 => 222, 1 => 342, 2 => 71, 3 => 33, 4 => 43, 5 => 665];

$res = array_combine($array1, 
           array_map(function($i1, $i2) { return $i1+$i2; },
                 ...array_chunk($array2, count($array1))))