PHP-如何将3个不同的数组组合成一个

PHP-如何将3个不同的数组组合成一个,php,arrays,Php,Arrays,所以我有3个不同的(但它们有一些相似之处),我想把它们合并成一个来执行一些计算 Array ( [0] => Array ( [0] => Agent [1] => Answered [2] => Missed [3] => Contribution [4] => Per Hour [5]

所以我有3个不同的(但它们有一些相似之处),我想把它们合并成一个来执行一些计算

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文档的某些部分。。。如果您愿意,您可以自己合并它们,但在您的示例中,没有必要。啊。。好的,我现在明白了,我必须更仔细地阅读文档;)因为我相信这些值会被覆盖,这会使洞变得无用。向上投票-接受:)注:我遇到的最大问题是如何以最明智、最有效的方式解决:)