В настоящее время у меня есть следующий массив:
Array
(
[0] => Array
(
[declaration_value] => 1
[date] => 2018-07-16
[client_id] => 3
[declaration_id] => 12
)
[1] => Array
(
[declaration_value] => 3
[date] => 2018-07-16
[client_id] => 3
[declaration_id] => 12
)
)
как я могу сделать, чтобы получить следующий результат массива: (счетчик_value_value, если та же дата / client_id / Declaration_id)
Array
(
[0] => Array
(
[declaration_value] => 4
[date] => 2018-07-16
[client_id] => 3
[declaration_id] => 12
)
)
Идея здесь в SO заключается в том, что вы пишете код! Если это не сработает так, как вы надеялись, вы обратитесь за помощью, и мы постараемся помочь вам исправить это. Но мы не пишем код для вас
Практически почти во всех случаях, если в вашем вопросе нет кода, пытающегося закодировать решение, это не по теме
Можете ли вы показать код, который создает этот массив? В идеале вы должны исправить этот код, чтобы он создавал нужный массив вместо того, чтобы создавать что-то, что вам не нужно, а затем исправлять его.
@marmeladze, это очень полезно, спасибо






$listdb = [
["declaration_value" => 1, "date" => "2018-07-16", "client_id" => 3, "declaration_id" => 12],
["declaration_value" => 2, "date" => "2018-07-16", "client_id" => 2, "declaration_id" => 12],
["declaration_value" => 2, "date" => "2018-07-16", "client_id" => 2, "declaration_id" => 12],
["declaration_value" => 8, "date" => "2018-07-17", "client_id" => 2, "declaration_id" => 12],
["declaration_value" => 3, "date" => "2018-07-16", "client_id" => 3, "declaration_id" => 12],
];
$sameKeys = ["date", "client_id", "declaration_id"];
$sumKeys = ["declaration_value"];
print_r(sum_my($listdb, $sameKeys, $sumKeys));
function sum_my(array $listdb = [], array $sameKeys = [], array $sumKeys = []): array {
$newdb = [];
if (empty($listdb) === true || empty($sameKeys) === true || empty($sumKeys) === true) {
return $newdb;
}
foreach ($listdb as $value) {
$ckKey = "";
foreach ($sameKeys as $sameKey) {
$ckKey .= $value[$sameKey];
}
if (isset($newdb[$ckKey])) {
foreach ($sumKeys as $sumKey) {
$newdb[$ckKey][$sumKey] += $value[$sumKey];
}
} else {
$newdb[$ckKey] = $value;
}
}
return $newdb;
}
Спасибо за советы, я решил.
посмотрите это - stackoverflow.com/questions/51320014