Array() bis [Résolu]

Signaler
Messages postés
431
Date d'inscription
mercredi 22 octobre 2003
Statut
Membre
Dernière intervention
17 novembre 2008
-
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
-
Bonjour,


Ce matin, un membre du forum m'a aidé à concevoir un tableau dans lequel je stocke le nom d'un champ (récupéré en méthode POST) ainsi que sa valeur. Ce qui me donne quelque chose comme :



Array
    [x4x2x1x1x39x0xjan] => 10,5
    [x4x2x1x1x40x0xjan] => 110
    [x4x2x2x1x41x0xjan] => 0
    [x4x2x3x1x42x0xjan] => 15.25
    etc...
)


Voici le code :



$query mysql_query("SELECT * FROM tbl_fte WHERE level 4 AND sa = 2 AND year = 2006");
while ($retrieval = mysql_fetch_array($query)) {
$ta = $retrieval_level_4['ta'];
$index = 'x4x'. $retrieval['sa'] .'x'. $retrieval['ta'] .'x'. $retrieval['bl'] .'x'. $retrieval['ia'] .'x'. $retrieval['dp'] .'xjan';
$value_index = $_POST[$index);
$array_value[$index] = $value_index;
}


Maintenant, j'aimerais que mon index soit '$ta' et que le tableau additionne automatiquement les valeurs correspondant à ce '$ta'.
Ce qui donnerait quelque chose du genre :



Array
    [1] => 1 + 2 + 3 (= 6)
    [2] => 4 + 5 + 6 (= 15)
    [3] => 7 + 8 + 9 (= 24)
)


Je ne sais comment m'y prendre.
J'ai vu sur php.net la fonction array_sum().


Je vous remercie pour votre aide.

10 réponses

Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
22
<?php
$aTruc = array (
     'x4x2x1x1x39x0xjan' => 10.5,
     'x4x2x1x1x40x0xjan' => 110,
     'x4x2x2x1x41x0xjan' => 0,
     'x4x2x3x1x42x0xjan' => 15.25
 );




foreach ($aTruc as $clef => $val) {
 $aClef = explode ('x', $clef);
 if (isset ($aSum[$aClef[3]])) {
  $aSum[$aClef[3]] += $val;
 } else {
  $aSum[$aClef[3]] = $val;
 }
}


echo '';
print_r ($aSum);
echo '

';


?>
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
22
Hello,

explique toi mieux, je n'ai rien compris. Tu additionnes quoi là?
Messages postés
431
Date d'inscription
mercredi 22 octobre 2003
Statut
Membre
Dernière intervention
17 novembre 2008

Salut,

Le $index contient une valeur provenant d'un formulaire.

Tous les champs qui dont $ta = 1 s'additionnent entre eux
Tous les champs qui dont $ta = 2 s'additionnent entre eux
Tous les champs qui dont $ta = 3 s'additionnent entre eux
Etc

C'est pourquoi je souhaites stocker comme index le $ta et comme valeur, la somme des champs qui lui correspondent.

Merci.
Messages postés
431
Date d'inscription
mercredi 22 octobre 2003
Statut
Membre
Dernière intervention
17 novembre 2008

Le $index est en fait le nom.
Je récupère sa valeur dans le $value_index.
Donc au départ, j'avais ça :
Array
    [x4x2x1
x1x39x0xjan] => 10,5
    [x4x2x1
x1x40x0xjan] => 110
    [x4x2x2
x1x41x0xjan] => 0
    [x4x2x3
x1x42x0xjan] => 15.25
    etc...
)

Seulement, il me faut la somme des champs appartenant à un même $ta (ceux qui sont en gras). Ce qui donenrait :
Array
    [1] => 120,5
    [2] => 0
    [3] => 15,25
)
Messages postés
1423
Date d'inscription
mardi 14 décembre 2004
Statut
Membre
Dernière intervention
29 décembre 2012
4
Bonjour en fait j'ai un probleme similaire au tien d'une certaine manière...

je sais pas comment il faut faire mais j'y travaille

-------------------------------------------------------------------------------------------------------
         
Il vaut mieux poser une question et passer pour bête que le rester
toute sa vie
Messages postés
431
Date d'inscription
mercredi 22 octobre 2003
Statut
Membre
Dernière intervention
17 novembre 2008

Ah cool,
J'espère qu'on trouvera.
J'ai plus ou moins essayé avec des tableaux-multidimensionnels mais je ne suis pas encore assez à l'aise avec ça...
Messages postés
1423
Date d'inscription
mardi 14 décembre 2004
Statut
Membre
Dernière intervention
29 décembre 2012
4
ton $ta varie de combien a combien ? et si c pas defnit et bien on fera moisn joli en code mais tout aussi fonctionnel

-------------------------------------------------------------------------------------------------------
         
Il vaut mieux poser une question et passer pour bête que le rester
toute sa vie
Messages postés
431
Date d'inscription
mercredi 22 octobre 2003
Statut
Membre
Dernière intervention
17 novembre 2008

Mon $ta est un entier qui est une clé étrangère.
Il correspond au nom du 'ta' dans une autre table que je gère dans un module d'administration.
Pour le moment, il peut être soit 1, soit 2, soit 3 mais le hic, c'est que l'administrateur pourra en ajouter ou pire, les supprimer

J'ai une idée de solution barbare. S'il le faut, on l'appliquera.
Je voudrais faire quelque chose du genre :
Je récupère ça :
[x4x2x1
x1x39x0xjan] => 10,5
[x4x2x1
x1x40x0xjan] => 110
[x4x2x2
x1x41x0xjan] => 0
[x4x2x3
x1x42x0xjan] => 15.25

Une sorte de substr, de récupérer le 3ème chiffre et de lui dire qu'il s'agit du ta.

je vais voir ça.

Et ton problème, il raconte quoi ?
Messages postés
431
Date d'inscription
mercredi 22 octobre 2003
Statut
Membre
Dernière intervention
17 novembre 2008

Malalam, merci beaucoup. Tu m'impressionnes. Ca à l'air si simple...

Teclis, merci à toi aussi.
N'hésite pas à poser ton problème.

On apprend beaucoup des problèmes des autres.

++
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
22
Ouais bah de rien, y avait sûrement plus propre, mais j'avais pas trop de temps.