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:

<?php
$x1=1;
$x2=2;
$x3=3;

$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:

<?php
$x1=1;
$x2=2;
$x3=3;
//x-ek száma:
$x_num=3;

for($i=1; $i<=$x_num; $i++)
 {
 $x="x".$i;
 $x_full.=+$$x;
 }
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.

<?php
$x1 = 1; $x2 = 2; $x3 = 3;
$x_num = 3;
$x_full = 0;
for($i = 1; $i <= $x_num; $i++) {
  /* Lehet úgy is, hogy először összerakod a változók egy külön
   * változóba, majd az általa mutatott változó értékét helyettesíted be
   */
  // $atmeneti = "x" . $i;
  // $x_full += $$atmeneti;
  /* De az alábbi nyelvtant is használhatod */
  $x_full += ${"x" . $i};
}
print ($x_full);
?>
(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.
<input type="text" name="szamok[]" />
<input type="text" name="szamok[]" />

...

<?php
  $szumma = 0;
  if (is_array($_POST['szamok'])) {
    $szumma = array_sum($_POST['szamok']);
  }
?>
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 :)