请问一些帮助,我不知道如何实现这一目标。我有3个阵列。我想将它们合并为一个,并且我还希望将特定user_id的outrange,inside和overdiff相加。
预期的输出数组就像这样
user_id => 39,
full_name => Mila Doe,
outrange =>20,
inside=>30,
overdiff=>50
提前谢谢。
// ARRAY1
Array
(
[0] => stdClass Object
(
[id] => 5
[user_id] => 39
[fullname] => Mila Doe
[outrange] => 03.55
)
[1] => stdClass Object
(
[id] => 2
[user_id] => 39
[fullname] => Mila Doe
[outrange] => 02.00
)
[2] => stdClass Object
(
[id] => 1
[user_id] => 39
[fullname] => Mila Doe
[outrange] => 05.00
)
[3] => stdClass Object
(
[id] => 3
[user_id] => 39
[fullname] => Mila Doe
[outrange] => 12.00
)
[4] => stdClass Object
(
[id] => 4
[user_id] => 39
[fullname] => Mila Doe
[outrange] => 03.00
)
[5] => stdClass Object
(
[id] => 6
[user_id] => 39
[fullname] => Mila Doe
[outrange] => 12.00
)
)
//数组2
Array
(
[0] => Array
(
[id] => 5
[user_id] => 39
[inside] => -1.0833
[fullname] => Mila Doe
)
[1] => Array
(
[id] => 2
[user_id] => 39
[inside] => 4.0000
[fullname] => Mila Doe
)
[2] => Array
(
[id] => 1
[user_id] => 39
[inside] => 11.0000
[fullname] => Mila Doe
)
[3] => Array
(
[id] => 3
[user_id] => 39
[inside] => 11.0000
[fullname] => Mila Doe
)
[4] => Array
(
[id] => 4
[user_id] => 39
[inside] => 2.0000
[fullname] => Mila Doe
)
[5] => Array
(
[id] => 6
[user_id] => 39
[inside] => 1.7500
[fullname] => Mila Doe
)
)
// ARRAY3
Array
(
[0] => stdClass Object
(
[id] => 5
[user_id] => 39
[fullname] => Mila Doe
[overdiff] => 03.55
)
[1] => stdClass Object
(
[id] => 2
[user_id] => 39
[fullname] => Mila Doe
[overdiff] => 06.00
)
[2] => stdClass Object
(
[id] => 1
[user_id] => 39
[fullname] => Mila Doe
[overdiff] => 04.00
)
[3] => stdClass Object
(
[id] => 3
[user_id] => 39
[fullname] => Mila Doe
[overdiff] => 11.00
)
[4] => stdClass Object
(
[id] => 4
[user_id] => 39
[fullname] => Mila Doe
[overdiff] => 05.00
)
[5] => stdClass Object
(
[id] => 6
[user_id] => 39
[fullname] => Mila Doe
[overdiff] => 01.45
)
)
答案 0 :(得分:1)
你应该尝试类似的东西。
<?php
$arrays = array($array1, $array2, $array3);
//result will be a map : key = user_id, value = information and sums
$result = array();
//go through each array
foreach ($arrays as $array) {
//go through each data of each array
foreach ($array as $userData) {
//first time we see data about this user ?
if (!isset($result[$userData['user_id']])) {
$result[$userData['user_id']] = array();
}
//set or sum informations of this user in the result array.
$result[$userData['user_id']]['user_id'] = $userData['user_id'];
$result[$userData['user_id']]['full_name'] = $userData['full_name'];
if (isset($userData['outrange'])) {
$result[$userData['user_id']]['outrange'] += $userData['outrange'];
}
if (isset($userData['inside'])) {
$result[$userData['user_id']]['inside'] += $userData['inside'];
}
if (isset($userData['overdiff'])) {
$result[$userData['user_id']]['overdiff'] += $userData['overdiff'];
}
}
}
$result = array_values($result);