$f_1 + $f_2 + ... + jusqu'à $f_n. [Résolu]

Petit nouveau ! | 3 Messages

13 oct. 2009, 17:16

Bonjour,

Mon problème est certainement très simples, mais franchement, je bloque :

Dans une page, j'ai une fonction "$maximum", qui donne le nombre de fonctions "$fonction["n"]",
et plusieurs fonctions, chacune nommée par incrémentation : $fonction[1], $fonction[2], $fonction[3], etc., jusqu'à la valeur de "$maximum".

Chaque fonction "$fonction["n"]" = une valeur quelconque.

Exemple :
$maximum = 5;

$fonction[1] = 1.20;
$fonction[2] = 9.00;
$fonction[3] = 3.20;
$fonction[4] = 2.40;
$fonction[5] = 2.00;
Je cherche à additionner toutes les "$fonction["n"]" :

Code : Tout sélectionner

$total = $fonction[1] + $fonction[2] + $fonction[3] + $fonction[4] + $fonction[5]
par une solution qui me permettrait de le faire même s'il y avait des "$fonction["n"]" jusqu'à $fonction[5000] (cas où $maximum = 5000).

En somme, une sorte de $total = $fonction[1] + $fonction[2] + ... + $fonction[$maximum];
Ou en utilisant une solution du type : for ($i = 1; $i <= $maximum; $i++)

En espérant avoir été clair...
Merci d'avance !

( PS : Toutes mes excuses si cette question très basique a déjà été posée, j'ai peut-être effectuer des recherches (ne fais que ça depuis ce matin) avec de mauvais mots clés... )
Modifié en dernier par Staedtler le 13 oct. 2009, 18:38, modifié 1 fois.

Administrateur PHPfrance
Administrateur PHPfrance | 977 Messages

13 oct. 2009, 17:20

regarde la fonction foreach ca te permettra de boucler sur ton tableau sans te préoccuper de sa taille.
pro : http://www.ohweb.fr -> studio de développement en PHP, expertise en e-commerce, certifié PrestaShop
perso : http://www.olecorre.com -> un dico de termes informatiques

J'ai toujours rêvé d'un ordinateur qui soit aussi facile à utiliser qu'un téléphone. Mon rêve s'est réalisé : je ne sais plus comment utiliser mon téléphone. [Bjarne Stroustrup]

Administrateur PHPfrance
Administrateur PHPfrance | 3131 Messages

13 oct. 2009, 17:25

« Somme des éléments d'un tableau » :arrow: « Sum of array elements » :arrow: « Sum array » :arrow: array_sum()

Administrateur PHPfrance
Administrateur PHPfrance | 977 Messages

13 oct. 2009, 17:26

ah oui j'y pensais plus au array_sum() !
pro : http://www.ohweb.fr -> studio de développement en PHP, expertise en e-commerce, certifié PrestaShop
perso : http://www.olecorre.com -> un dico de termes informatiques

J'ai toujours rêvé d'un ordinateur qui soit aussi facile à utiliser qu'un téléphone. Mon rêve s'est réalisé : je ne sais plus comment utiliser mon téléphone. [Bjarne Stroustrup]

ViPHP
fab
ViPHP | 2657 Messages

13 oct. 2009, 17:30

Si tu veux faire une simple addiction de tous les éléments de ton tableau tu peux utiliser la fonction array_sum()

Donc dans ton cas ça va donner
$somme = array_sum($fonctions);
Pour les autres cas que l'addition, je te conseille de faire une boucle for, c'est simple est efficace :) Mais attention il faut être certains que l'incrémentation dans ton tableau est sans "trou" ce qui signifie que tu dois obligatoire voir un élément n-1 pour chaque élément n de ton tableau. Sinon faudra pencher du côté de foreach qui fait ça tout seul mais qui est moins performant...

Exemple avec for :
$somme = 0;
for($i=0;$i<$maximum) $somme += $fonctions[$i]; 
+= est un syntaxe courte de $somme = $somme + $fonction[$i]
Seul l'intelligent a le pouvoir de se trouver con
try { work(); } catch(FlemmeExeption $e) { sleep(84600); }

Petit nouveau ! | 3 Messages

13 oct. 2009, 17:59

Merci beaucoup Cobaye, naholyr et Fab,

J'oubliai de préciser que je préférai éviter d'utiliser un tableau, dans le cas présent, et c'est justement là que je sèche... additionner des fonctions $f[1] + $f[2] + ... , jusqu'à $f[$maximum], sans utiliser un tableau.

Depuis deux jours j'ai essayé pas mal de choses avec les tableaux et fonctions array_sum, etc., mais ça engendre de nombreux bugs, qui nécessitent autant de vérifications (lourdeur du script), pour incrémenter le tableau de chaque nouvelle valeur. Ou alors il faudrait que je sache comment entrer toutes les fonctions/valeurs dans ce tableau :

Code : Tout sélectionner

array(1=>$fonction[1], $fonction[2], $fonction[3]
jusqu'à $fonction[$maximum], dont la valeur est variable (nombre de "$fonction["n"]" variable).

Je lis en détail vos réponses, qui sont arrivées pendant que j'écris ces quelques lignes...

Encore merci pour vos pistes éclairés. :-)

Edit :

Code : Tout sélectionner

$somme = 0; for($i=0;$i<$maximum) $somme += $fonctions[$i];
Je teste ça !

Petit nouveau ! | 3 Messages

13 oct. 2009, 18:35

Encore un grand merci à vous trois ! :pouce:

J'ai utilisé la solution de Fab qui fonctionne parfaitement :

Code : Tout sélectionner

$maximum_2 = $maximum + 1; $somme = 0; for($i = 1; $i < $maximum_2; $i++) { $total = $somme += $fonction[$i]; };
C'était la plus simple à utiliser dans mon cas...