Calcul d'une somme dans colone de tableau avec condition

cs_converse Messages postés 46 Date d'inscription mercredi 21 avril 2004 Statut Membre Dernière intervention 14 mai 2009 - 14 mai 2009 à 10:11
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 - 14 mai 2009 à 22:20
Bonjour à tous,
 
Mon titre n'est peut-être pas très explicite.
 
Je me trouve confronté à un problème pour calculer un total sur un tableau multidimensionnel.
 
Je m'explique.
 
Voici comment je déclare mon tableau :
 
$_SESSION['caddie'] = array();
$_SESSION['caddie']['id'] = array();
$_SESSION['caddie']['hotel_id'] = array();
$_SESSION['caddie']['nom_hotel'] = array();
$_SESSION['caddie']['tarif'] = array();
 
Je me retrouve donc avec un tableau caddie du genre :
 
0 | 10 | Mercure | 110
1 | 13 | Meridien | 135
2 | 10 | Mercure | 110
3 | 22 | Ibis | 125
4 | 25 | Holiday Inn | 140
5 | 10 | Mercure | 110
 
Je cherche à calculer le montant total de la colonne tarif mais seulement pour l'hôtel mercure par exemple.
Donc seulement si l'id de l'hotel est égal à 10 (je vais chercher les infos hôtels dans une base de données).
Pour obtenir  330 dans cet exemple.
 
Cela fait un bon moment que j'essais avec des array sum et autres boucles for each plus ou moins propres sans y parvenir.
 
Quelqu'un à t'il une proposition ?
 
Merci.

5 réponses

nautilus99 Messages postés 661 Date d'inscription vendredi 26 septembre 2008 Statut Membre Dernière intervention 18 septembre 2009 1
14 mai 2009 à 16:27
public function calcSum( $hotel )
{
    $cad = $_SESSION['caddie'] ;
    $res = 0 ;

    foreach ( $cad as $elem ) {
        if ( $elem['hotel_id'] == $hotel ) {
            $res += $elem['tarif'] ;
        }
    }
    return $res ;
}

par exemple, devrait convenir.
0
cs_converse Messages postés 46 Date d'inscription mercredi 21 avril 2004 Statut Membre Dernière intervention 14 mai 2009
14 mai 2009 à 16:46
Merci pour ta réponse, malheuresement la fonction me retourne 0.
J'ai présenté mon caddie différement pour éviter ce calcul mais je suis toujours preneur si  quelqu'un trouve une réponse.
0
nautilus99 Messages postés 661 Date d'inscription vendredi 26 septembre 2008 Statut Membre Dernière intervention 18 septembre 2009 1
14 mai 2009 à 16:55
Tentes d'insérer un var_dump( $_SESSION['caddie'] ) au début de ta fonction, et de regarder ligne à ligne ce qui se passe.
Ce type d'analyse de tableaux est très courant et fonctionne en général très bien, sauf quand autre chose est la cause du problème...
Le plus fréquent étant que le tableau est vide, ou que son format ne correspond plus.
0
cs_converse Messages postés 46 Date d'inscription mercredi 21 avril 2004 Statut Membre Dernière intervention 14 mai 2009
14 mai 2009 à 16:59
Merci je prendrais le temps de faire ce test.

L'urgence veux que je termine ce caddie pour demain soir, j'ai donc contourner le problème.
Je teste cela et posterais le résulat.

Merci encore.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
14 mai 2009 à 22:20
Salut,

Si les données proviennent d'une DB pourquoi ne pas faire ce calcul directement dans la requête ?
Si il n'y a pas de raison à ça peux tu nous indiquer la structure de la table ?

Cordialement,

Kohntark -
0
Rejoignez-nous