IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Fonction cumul sur un array


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Août 2011
    Messages : 15
    Points : 12
    Points
    12
    Par défaut Fonction cumul sur un array
    Bonjour,
    ayant essayé avec mon ami google de trouver une réponse (qui n'a malheureusement rien donné), je viens ici pour demander votre aide.

    Je possède un array comportant differentes valeurs, par exemeple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    $tableau=array();
    $tableau[106042]=3.2;
    $tableau[107047]=0;
    $tableau[109070]=0;
    $tableau[120080]=12;
    $tableau[140060]=0;
    $tableau[150075]=5;
    Les valeurs des clés sont des timestamp (ici c'est seulement un exemple ) générées aléatoirement.

    Je voudrais trouver une fonction (ou un moyen pour y parvenir) pour arriver à cumuler les valeurs, par exemple on obtiendrait ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    $tableau[106042]=3.2;
    $tableau[107047]=3.2;
    $tableau[109070]=3.2;
    $tableau[120080]=15.2;
    $tableau[140060]=15.2;
    $tableau[150075]=20.2;
    J'ai essayé avec du foreach, la fonction next, current, prev... je n'y arrive pas .

    Par quel moyen je pourrais arriver à ce résultat ?
    Merci
    Tintin

  2. #2
    Membre éclairé
    Inscrit en
    Juillet 2003
    Messages
    625
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 625
    Points : 673
    Points
    673
    Par défaut
    Bonjour,

    array_sum ?

  3. #3
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Août 2011
    Messages : 15
    Points : 12
    Points
    12
    Par défaut
    Avec une boucle foreach :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    foreach ($tableau as $key => $val)
    {
    $test[$key]=array_sum($tableau);
     
    }
    J'obtiens pour toutes les valeurs le total du tableau soit 20.2 pour toutes les valeurs...

  4. #4
    Membre éclairé
    Inscrit en
    Juillet 2003
    Messages
    625
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 625
    Points : 673
    Points
    673
    Par défaut
    oui, je pensais que array_sum gérait les clés...

    et ça ? :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    foreach( $tableau as $key => $val) {
    	$tab[$key] += $val;
    }

  5. #5
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Août 2011
    Messages : 15
    Points : 12
    Points
    12
    Par défaut
    J'obtiens :
    Undefined variable : $test
    undefined offset : [106042]
    undefined offset : [107047]
    undefined offset : [109070]
    ...

    D'où cela peut-il bien venir ?
    En tout cas merci de t'intéresser à mon problème.

  6. #6
    Membre éclairé
    Inscrit en
    Juillet 2003
    Messages
    625
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 625
    Points : 673
    Points
    673
    Par défaut
    remontre ton code, d'où vient ton $test ?

  7. #7
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    SI je comprends bien, le but est de cumuler d'un index vers le suivant.
    Genre si le tableau d'origine est
    [a] => 2
    [b] => 3
    [c] => 9
    le but est d'obtenir un tableau du genre :
    [a] => 2 (valeur de a)
    [b] => 2 + 3  = 5 (valeur de b + a)
    [c] => 9 + 5 = 14 (valeur de c + b)
    Quelque chose comme ça ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $tab = array(2, 3, 9);
    $tabCumul = array();
    $cumul = 0;
    foreach ($tab as $key => $val) {
    	$cumul += $val;
    	$tabCumul[$key] = $cumul;
    }

  8. #8
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Août 2011
    Messages : 15
    Points : 12
    Points
    12
    Par défaut
    Celira,
    je testerai ta solution ce soir à la maison, j'espère que ça marchera.
    Sinon, quelle est la signification de cette ligne (du signe +=) ?
    Est-ce la même chose que ça ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $cumul = $cumul + $val;
    remontre ton code, d'où vient ton $test ?
    C'était mon tableau final.


    En tout cas merci pour vos réponses.

  9. #9
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    Je me demande bien ou est la difficulté ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    $a = array();
    $a[123456] = 1;
    $a[123457] = sum($a) + 2;
    $a[123458] = sum($a) + 3;
    $a[123459] = sum($a) + 5;
    $a[123450] = sum($a) + 123;
    $a[123451] = sum($a) + 6;

  10. #10
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Août 2011
    Messages : 15
    Points : 12
    Points
    12
    Par défaut
    Je me demande bien ou est la difficulté ?

    $a = array();
    $a[123456] = 1;
    $a[123457] = sum($a) + 2;
    $a[123458] = sum($a) + 3;
    $a[123459] = sum($a) + 5;
    $a[123450] = sum($a) + 123;
    $a[123451] = sum($a) + 6;

    Euh...
    D'où tu sort la fonction sum et les valeurs (123???).
    Je n'ai pas du tout compris ta réponse...
    C'est pour un tableau avec plus de 1000 entrées .

  11. #11
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Août 2011
    Messages : 15
    Points : 12
    Points
    12
    Par défaut
    Bon effectivement la réponse de Celira fonctionne à merveille .
    Encore merci pour ton aide.
    Voici la réponse :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    $tab = array(2, 3, 9);
    $tabCumul = array();
    $cumul = 0;
    foreach ($tab as $key => $val) {
    	$cumul += $val;
    	$tabCumul[$key] = $cumul;
    }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. fonctions sur numpy.array
    Par jeps76 dans le forum Calcul scientifique
    Réponses: 5
    Dernier message: 02/04/2011, 21h31
  2. Réponses: 4
    Dernier message: 12/05/2010, 17h30
  3. fonction cumul sur un champ de sous formuliare
    Par patmar83 dans le forum VBA Access
    Réponses: 1
    Dernier message: 20/01/2010, 12h54
  4. fonction récurrente sur array
    Par SpaceFrog dans le forum Langage
    Réponses: 6
    Dernier message: 25/09/2009, 17h15
  5. fonction trim sur les array de array
    Par billyrose dans le forum Langage
    Réponses: 2
    Dernier message: 14/07/2009, 12h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo