Somme un array par clé

Fermé
tigre198 Messages postés 54 Date d'inscription dimanche 27 avril 2008 Statut Membre Dernière intervention 13 août 2012 - 21 août 2008 à 14:18
tigre198 Messages postés 54 Date d'inscription dimanche 27 avril 2008 Statut Membre Dernière intervention 13 août 2012 - 22 août 2008 à 11:06
Bonjour,
y'a t'il pas fo,ction omme array sum mais qu'elle retourne somme total par clé
par exemlple

array1('clé1=>5, clé2=>9)
array1('clé1=>5, clé2=>9)

et donc j'auraus résultat

clé 1=10
clé2=18;

pour array sum elle donne résultat total des valeurs
A voir également:

2 réponses

Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 922
21 août 2008 à 18:29
salut,

je n'ai pas trouvé de fonction spécifique mais si tu peux entrer tous tes tableaux dans un tableau global tu pourra toujours itérer dessus et faire ta somme.
0
tigre198 Messages postés 54 Date d'inscription dimanche 27 avril 2008 Statut Membre Dernière intervention 13 août 2012 9
22 août 2008 à 11:06
salut
merçi pour ta réponse
j'ai cherhé et j'ai pas trouvé fonctions prédefinie
mais en ravanche j'ai trouvé ça
la fonction:
<?php
function array_sum_values() {
    $return = array();
    $intArgs = func_num_args();
    $arrArgs = func_get_args();
    if($intArgs < 1) trigger_error('Warning: Wrong parameter count for array_sum_values()', E_USER_WARNING);
    
    foreach($arrArgs as $arrItem) {
        if(!is_array($arrItem)) trigger_error('Warning: Wrong parameter values for array_sum_values()', E_USER_WARNING);
        foreach($arrItem as $k => $v) {
            $return[$k] += $v;
        }
    }
    return $return;
}
script:
$array1 = array('1'=>'1','2'=>'2','3'=>'3');
$array2 = array( '2'=>'1','3'=>'2','4'=>'3');
$array3 = array('3'=>'1','4'=>'22','5'=>'3');
print_r($array1 );
print_r($array2 );
print_r($array3 );
$array  = array_sum_values($array1, $array2, $array3) ;
print_r($array);
?>

si tu teste ça
tu aura come résultat:

Array ( [3] => 1 [4] => 22 [5] => 3 ) ...

c'est a dire il calcule somme par clé
mais en revanhe mon probleme est suivant:

si tu connais fonction qui se trouve deja dans la page fonction date() de manuel de php qui calcule nombre de jour
entre deux dates en excluant les jours feriées et dimanche
j'ai améliorer la fonction du fait j'affiche le nombre de jour par semaine mais je dois commencé de base sql

voiçi script
$sql = 'SELECT date_debut, date_fin FROM `table`';
$req = mysql_query($sql);
 $business_days=0;
while ($data = mysql_fetch_array($req))
{

   $business_days = $dates->days_diff($data['date_debut'], $data['date_fin']);
}
      echo '<pre>';
$array  = array_sum_values($business_days);

   echo '</pre>';


bien sur résultat sera que pour derniere ligne de la table

Array ( [0] => 0 [14] => 5[15] => 5[16] => 5 [17] =>5 [18] => 4 )

les clés est equivalent au numero de la semaine de l'année

j'ai essyé de stocké $business_days dans un autre array mais du coup fonction marchera plus

avant j'ai mis la requete sql et le calcul dans la fonction qui calcul nombre de jour
ça a marché mais pour le temps d'executionc'est trop 4 secondes pour 2000 lignes le probeleme dans la meme page je dois afficher tableau de dtaes par semaines mais aussi par type donc 5 fois
alors ça sera 20 secondes.
bref j'espere que t'a compris probleme
cordialement
0