Valeurs du tableau de somme PHP si une colonne spécifique a une valeur en double
Raymond
j'ai un tableau. Je veux vérifier s'il y a des FRAIS en double et s'il y en a, je veux résumer toutes les valeurs avec la même COLONNE DE FRAIS.
[12] => Array
(
[type] => Other Miscellaneous Fees
[fee] => 158
[amount] => -22.56
[code] => COL_AUDIO
[feedesc] => COLLEGE AUDIO VISUAL FEE
)
[13] => Array
(
[type] => Other Miscellaneous Fees
[fee] => 158
[amount] => -297.86
[code] => COL_AUDIO
[feedesc] => COLLEGE AUDIO VISUAL FEE
)
[14] => Array
(
[type] => Other Miscellaneous Fees
[fee] => 182
[amount] => -40.00
[code] => STRAP
[feedesc] => ID STRAP
)
[15] => Array
(
[type] => Other Miscellaneous Fees
[fee] => 177
[amount] => -105.00
[code] => PRISAA
[feedesc] => PRISAA
)
sortie souhaitée, je veux qu'il soit stocké dans un nouveau tableau. J'ai essayé de jouer avec array_sum et array colum. mais il additionnera tous les champs. Merci
array_sum(array_column($feesArray, 'fee'));
[0] => Array
(
[type] => Other Miscellaneous Fees
[fee] => 158
[amount] => -320.42
[code] => COL_AUDIO
[feedesc] => COLLEGE AUDIO VISUAL FEE
)
[1] => Array
(
[type] => Other Miscellaneous Fees
[fee] => 182
[amount] => -40.00
[code] => STRAP
[feedesc] => ID STRAP
)
[2] => Array
(
[type] => Other Miscellaneous Fees
[fee] => 177
[amount] => -105.00
[code] => PRISAA
[feedesc] => PRISAA
)
Plixxer
Pour additionner toutes les valeurs avec la même COLONNE DE FRAIS, vous pouvez créer une boucle for qui itère chaque résultat pour vérifier si la valeur est déjà dans le tableau.
$data = Array(
Array
(
"type" => "Other Miscellaneous Fees",
"fee" => 158,
"amount" => -22.56,
"code" => "COL_AUDIO",
"feedesc" => "COLLEGE AUDIO VISUAL FEE"
),
Array(
"type" => "Other Miscellaneous Fees",
"fee" => 158,
"amount" => -297.86,
"code" => "COL_AUDIO",
"feedesc" => "COLLEGE AUDIO VISUAL FEE"
),
Array
(
"type" => "Other Miscellaneous Fees",
"fee" => 182,
"amount" => -40.00,
"code" => "STRAP",
"feedesc" => "ID STRAP"
),
Array
(
"type" => "Other Miscellaneous Fees",
"fee" => 177,
"amount" => -105.00,
"code" => "PRISAA",
"feedesc" => "PRISAA"
)
);
foreach ($data as $data_key => &$data_searcher) {
foreach ($data as $data_searcher_key => $data_searcher_value) {
if(
($data_searcher['fee'] === $data_searcher_value['fee']) &&
$data_key !== $data_searcher_key
){
$data_searcher['amount'] += $data_searcher_value['amount'];
unset($data[$data_searcher_key]);
}
}
}
echo "<pre>";
print_r($data);
echo "</pre>";