我可以寻求一些帮助吗?我不知道如何实现这一点。我有3个数组。我想把它们合并为一个,我还想对特定user_id的outrange、internal和overdiff求和。
预期的输出数组类似于
user_id => 39,
full_name => Mila Doe,
outrange =>20,
inside=>30,
overdiff=>50
提前谢谢。
//阵列1
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
)
)
//阵列3
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
)
)
你应该试试这样的方法。
<?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);