合并并映射两个数组
Combine and map two arrays
我需要合并两个数组,其中第一个数组包含活动名称列表 ( page_data ),例如
[0 => "Campaign 1", 1 => "Campaign 2", 2 => "Campaign 3"]
和另一个数组,其中包含活动的潜在客户数量。但是这个数组将包含两倍于 campaign 数组的键,如下所示:
[0 => 222, 1 => 342, 2 => 71, 3 => 33, 4 => 43, 5 => 665]
它包含两倍多的键,因为它将从两种不同的形式中获取潜在客户,因此 key 0
和 key 3
的值将用于活动 1,key 2
和 key 4
将用于广告系列 2。它将始终如此。如果有 5 个活动,leads 数组将有 10 个键,key 0
和 key 5
将用于活动 1,key 1
和 key 6
用于活动 2,等等
然后我有这段代码要组合( push ):
foreach(json_decode($result) as $key) {
foreach($pages["page_data"] as $p => $pvalue) {
array_push($leadArray, array("pageName" => $pvalue["form_name"], "pageLeads" => $key[$p]));
}
}
这将使数组看起来像:
["campaign 1" => 222, "campaign 2" => 342, "campaign 3" => 71]
但是这只会采用键 0、1、2,因此键 3、4、5 不会出现在数组中。
我想要的是 leads 数组中的 key 0 和 key 3,key 1 和 key 4 等,这样新的 leads 数组将是
[0 => 255, 1 => 386, 2 => 736]
然后我可以将其与 campaigns 数组组合,因为两个数组中的键数现在将匹配,这将给我一个看起来像
的数组
["campaign 1" => 255, "campaign 2" => 386, "campaign 3" => 736]
使用 array_chunk 函数拆分您的第二个数组,将很容易对值求和。
当您使用此功能时,您的数组将拆分为两个数组。在第一个数组中,您将拥有值 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);
结果是:
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);
@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))))
我需要合并两个数组,其中第一个数组包含活动名称列表 ( page_data ),例如
[0 => "Campaign 1", 1 => "Campaign 2", 2 => "Campaign 3"]
和另一个数组,其中包含活动的潜在客户数量。但是这个数组将包含两倍于 campaign 数组的键,如下所示:
[0 => 222, 1 => 342, 2 => 71, 3 => 33, 4 => 43, 5 => 665]
它包含两倍多的键,因为它将从两种不同的形式中获取潜在客户,因此 key 0
和 key 3
的值将用于活动 1,key 2
和 key 4
将用于广告系列 2。它将始终如此。如果有 5 个活动,leads 数组将有 10 个键,key 0
和 key 5
将用于活动 1,key 1
和 key 6
用于活动 2,等等
然后我有这段代码要组合( push ):
foreach(json_decode($result) as $key) {
foreach($pages["page_data"] as $p => $pvalue) {
array_push($leadArray, array("pageName" => $pvalue["form_name"], "pageLeads" => $key[$p]));
}
}
这将使数组看起来像:
["campaign 1" => 222, "campaign 2" => 342, "campaign 3" => 71]
但是这只会采用键 0、1、2,因此键 3、4、5 不会出现在数组中。
我想要的是 leads 数组中的 key 0 和 key 3,key 1 和 key 4 等,这样新的 leads 数组将是
[0 => 255, 1 => 386, 2 => 736]
然后我可以将其与 campaigns 数组组合,因为两个数组中的键数现在将匹配,这将给我一个看起来像
的数组["campaign 1" => 255, "campaign 2" => 386, "campaign 3" => 736]
使用 array_chunk 函数拆分您的第二个数组,将很容易对值求和。
当您使用此功能时,您的数组将拆分为两个数组。在第一个数组中,您将拥有值 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);
结果是:
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);
@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))))