PHP-如何将3个不同的数组组合成一个
所以我有3个不同的(但它们有一些相似之处),我想把它们合并成一个来执行一些计算PHP-如何将3个不同的数组组合成一个,php,arrays,Php,Arrays,所以我有3个不同的(但它们有一些相似之处),我想把它们合并成一个来执行一些计算 Array ( [0] => Array ( [0] => Agent [1] => Answered [2] => Missed [3] => Contribution [4] => Per Hour [5]
Array
(
[0] => Array
(
[0] => Agent
[1] => Answered
[2] => Missed
[3] => Contribution
[4] => Per Hour
[5] => Total Ring Time
[6] => Mean Ring Time
[7] => Total Talk Time
[8] => Mean Talk Time
[9] => Total Wrap Time
[10] => Mean Wrap Time
[11] => Total Session Time
[12] => Mean Session Time
[13] => Number of Sessions
[14] => % Util
[15] => Agent Hang-Ups
[16] => Caller Hang-Ups
[17] => Agent Hang-Ups Percent
[18] => Caller Hang-Ups Percent
)
[1] => Array
(
[0] => Amber
[1] => 16
[3] => 2.0%
[4] => 0.2
[5] => 28.6
[6] => 1.8
[7] => 1861.1
[8] => 116.3
[9] => 0.0
[10] => 0.0
[11] => 234862.2
[12] => 3403.8
[13] => 69.0
[14] => 0.8%
[15] => 10
[16] => 6
[17] => 62.5%
[18] => 37.5%
)
[2] => Array
(
[0] => Amie
[1] => 106
[3] => 13.5%
[4] => 3.0
[5] => 721.7
[6] => 6.8
[7] => 12268.0
[8] => 115.7
[9] => 0.0
[10] => 0.0
[11] => 127011.0
[12] => 6350.5
[13] => 20.0
[14] => 9.7%
[15] => 54
[16] => 52
[17] => 50.9%
[18] => 49.1%
)
)
阵列2
Array
(
[0] => Array
(
[0] => Agent
[1] => Answered
[2] => Missed
[3] => Contribution
[4] => Per Hour
[5] => Total Ring Time
[6] => Mean Ring Time
[7] => Total Talk Time
[8] => Mean Talk Time
[9] => Total Wrap Time
[10] => Mean Wrap Time
[11] => Total Session Time
[12] => Mean Session Time
[13] => Number of Sessions
[14] => % Util
[15] => Agent Hang-Ups
[16] => Caller Hang-Ups
[17] => Agent Hang-Ups Percent
[18] => Caller Hang-Ups Percent
)
)
阵列3
[0] => Array
(
[0] => Agent
[1] => Answered
[2] => Missed
[3] => Contribution
[4] => Per Hour
[5] => Total Ring Time
[6] => Mean Ring Time
[7] => Total Talk Time
[8] => Mean Talk Time
[9] => Total Wrap Time
[10] => Mean Wrap Time
[11] => Total Session Time
[12] => Mean Session Time
[13] => Number of Sessions
[14] => % Util
[15] => Agent Hang-Ups
[16] => Caller Hang-Ups
[17] => Agent Hang-Ups Percent
[18] => Caller Hang-Ups Percent
)
[1] => Array
(
[0] => (7312
[1] => 1
[3] => 0.0%
[4] => 459.8
[5] => 0.0
[6] => 0.0
[7] => 0.4
[8] => 0.4
[9] => 0.0
[10] => 0.0
[11] => 7.8
[12] => 2.6
[13] => 3.0
[14] => 5.5%
[15] => 1
[17] => 100.0%
[18] => 0.0%
)
[2] => Array
(
[0] => Amber
[1] => 414
[2] => 9
[3] => 9.3%
[4] => 6.3
[5] => 1880.1
[6] => 4.4
[7] => 65209.8
[8] => 157.5
[9] => 240.4
[10] => 0.6
[11] => 234862.2
[12] => 3403.8
[13] => 69.0
[14] => 27.8%
[15] => 290
[16] => 124
[17] => 70.0%
[18] => 30.0%
)
在这个例子中,我有3个数组,都有相同的第一个初始数组。但是,这些阵列的大小可能不同,并且可能不共享相同的用户。
人们也可以在不同的地方,例如
Array 1 : Common -> Amber -> Amie
Array 2 : Common ->
Array 3 : Common -> 7312 -> Amber ->Amie
现在,最后一个数组应该如下所示
Array 4 : Common -> 7312 -> Amber -> Amie
所有数组中的所有值也应组合在一起,即:
Amber 1st array / 1st value : 16
Amber 2nd array / 2nd value : 414
Amber final array value : 414 + 16 = 430
希望我已经把问题说清楚了 基本上,你总结所有你得到的信息,删除标题。然后使用信息整合重新构建一个新阵列
//merge all arrays, remove the first element, it is headers.
$my_total_array = array_merge(
array_splice($array1,1),
array_splice($array2,1),
array_splice($array3,1)
);
$myagents = array();
foreach($my_total_array as $agent){
if(!isset($myagents[$agent[0]])){
//Never met the agent, add them.
$myagents[$agent[0]] = $agent;
}else{
//We already seen the agent, do maths.
$myagents[$agent[0]][1]+=$agent[1];
//TODO: Apply consolidation rules for other fields.
}
}
//Put the headings back at the beggining.
array_unshift($myagents,$array1[0]);
print_r($myagents);
我希望这有帮助
编辑:来自PHP文档
将一个或多个数组的元素合并在一起,以便
其中一个的附加到前一个的末尾。它返回
结果数组
如果输入数组具有相同的字符串键,则后面的值
因为该键将覆盖上一个键。但是,如果
包含数字键,后面的值不会覆盖原始值
值,但将被追加
到目前为止你试过什么?在数组中循环似乎是要做的事情。。。但是如果没有代码,我们真的帮不上忙……你能用什么来关联数据呢?我看不到任何类型的一致标识符。@Salketer这与我已经/没有尝试过的内容无关。。。我有更多的问题是逻辑方法。代码方面没有必要。@prodigitalson我想用第一个公共数组中的相应值替换所有Arary的键。因此,我将[Agent]作为第一个元素,而不是[0]作为第一个元素的键。感谢您的输入。但是我认为array_merge函数在合并两个具有相同键但不同值的数组时,第一个数组的值将被第二个值覆盖?编辑以添加有关array_merge的PHP文档的某些部分。。。如果您愿意,您可以自己合并它们,但在您的示例中,没有必要。啊。。好的,我现在明白了,我必须更仔细地阅读文档;)因为我相信这些值会被覆盖,这会使洞变得无用。向上投票-接受:)注:我遇到的最大问题是如何以最明智、最有效的方式解决:)