ugrás a tartalomhoz

Változók értékének összeadása for ciklusban

Fedor · 2006. Jan. 4. (Sze), 15.27
Sziasztok!

A következő problémába futottam bele:

Van mondjuk három változóm, ami egész számot tartalmaz, ha ezeket szeretném összeadni, ami alaphelyzetben nem is jelent gondot:
  1. <?php  
  2. $x1=1;  
  3. $x2=2;  
  4. $x3=3;  
  5.   
  6. $x_full=$x1+$x2+$x3;  
és akkor a $x_full értéke 6 lesz.

Igen ám, de az x-ek száma változó (űrlapból érkeznek, lehet háromnál több is, kevesebb is), így arra gondoltam, hogy megoldom for ciklussal:
  1. <?php  
  2. $x1=1;  
  3. $x2=2;  
  4. $x3=3;  
  5. //x-ek száma:  
  6. $x_num=3;  
  7.   
  8. for($i=1; $i<=$x_num$i++)  
  9.  {  
  10.  $x="x".$i;  
  11.  $x_full.=+$$x;  
  12.  }  
Viszont így nem összeadja, hanem összefűzi őket, tehát $x_full értéke 123. Próbálkoztam azzal is, hogy a $$x értékét átalakítom számmá, hátha ez a gond, de ez sem segített.

Előre is köszi a tippeket, hogy mit ronthattam el.
 
1

Változó változó

Török Gábor · 2006. Jan. 4. (Sze), 15.52
Olvass picit utána a változó változóknak.
  1. <?php  
  2. $x1 = 1; $x2 = 2; $x3 = 3;  
  3. $x_num = 3;  
  4. $x_full = 0;  
  5. for($i = 1; $i <= $x_num$i++) {  
  6.   /* Lehet úgy is, hogy először összerakod a változók egy külön 
  7.    * változóba, majd az általa mutatott változó értékét helyettesíted be 
  8.    */  
  9.   // $atmeneti = "x" . $i;  
  10.   // $x_full += $$atmeneti;  
  11.   /* De az alábbi nyelvtant is használhatod */  
  12.   $x_full += ${"x" . $i};  
  13. }  
  14. print ($x_full);  
  15. ?>  
(Az első megoldást azért tettem megjegyzésbe, mert különben duplán adódna hozzá minden szám.)
2

Köszi

Fedor · 2006. Jan. 4. (Sze), 15.56
Akkor én az első verziót próbáltam, csak a + jelet tettem rossz helyre.

Köszi, kipróbálom.

Üdv,
Fedor
3

űrlapból jön

Hojtsy Gábor · 2006. Jan. 4. (Sze), 15.58
No, ha űrlapból jön, akkor célszerű tömbként venni, és minden sokkal vidámabb.
  1. <input type="text" name="szamok[]" />  
  2. <input type="text" name="szamok[]" />  
  3.   
  4. ...  
  5.   
  6. <?php  
  7.   $szumma = 0;  
  8.   if (is_array($_POST['szamok'])) {  
  9.     $szumma = array_sum($_POST['szamok']);  
  10.   }  
  11. ?>  
Ha esetleg nem összeadás lenne, akkor array_map() tud bármilyen műveletet végrehajtani elemenként, vagy array_reduce() állít elő egy darab értéket az egész tömb alapján. Mindkettőnek saját kezelőfüggvényt kell megadni, ami a tényleges viselkedést definiálja.
4

Ha már array függvények

Poetro · 2006. Jan. 4. (Sze), 16.35
Akkor itt a lehetőség a nagyszerű array_sum használatára.
--------
Poetro
5

:)

Hojtsy Gábor · 2006. Jan. 4. (Sze), 19.37
Ez volt a példámban :)