Seite 1 von 2

Arrays in Schleifen zusammenrechnen

Verfasst: 03.10.2005 18:23
von Ivan
hallo,

ich hab mit folgendem Code ein Problem.

Code: Alles auswählen

<html>
<body>
<?php
$table = explode("</table>", $_POST["comment"]);

$td = explode("</td>", $table[2]);
$i = count($td);

unset($td[0], $td[1], $td[2], $td[3], $td[4], $td[5], $td[6], $td[7], $td[8], $td[9]);

echo "<table width='80%' border='1' cellspacing='0'>
  <tr>";

for ($n=0; $n<$i; $n++)
{
echo "$td[$n]";
}
echo "</td></tr></table>";

$m = 6;

for ($q=0; $q<$i; $q=$q+10)
{
$m = $m+10;

$ergebnis = $ergebnis + $td[$m];

echo "$td[$m]<br>";
}
echo "$ergebnis";
?>
</body>
</html>
Ich will die Arrays $td[$m] zusammenzählen und das Ergebnis nach der Schleife ausgeben.
Aber das Ergebnis ist immer 0.

Ich hab mir sagen lassen, dass man auf Variablen, die innerhalb einer Schleife erzeugt wurden, außerhalb kein Zugriff mehr hat...stimmt das??

Wenn ja, wie kann ich mein Problem lösen??

Gruß
Ivan

Verfasst: 03.10.2005 18:26
von Nico Haase
dass du auf variablen, die innerhalb einer schleife angelegt werden, außerhalb keinen zugriff hast, stimmt nicht, das gilt für funktionen. lösungsvorschlag: setz einmal vor der schleife $ergebnis = 0, vielleicht gehts dann.

Verfasst: 03.10.2005 18:28
von Ivan
geht auch net.
Ich hab auch noch andere Zahlen eingegeben.
Genau dieser werden dann am Schluss ausgegeben.

Also muss ich davon ausgehen, dass der die Schleife gar net beachtet??

Verfasst: 03.10.2005 18:34
von mad-manne
Also mal abgesehen davon dass mir nicht ganz klar ist, was du im oberen teil deines Codes anstellst.(mittels unset löschst du da 'ne Menge, aber du wirst schon wissen warum :wink: )

Aber hier ist ja auch einiges verwurschtelt:

Code: Alles auswählen

$m = 6;

for ($q=0; $q<$i; $q=$q+10)
{
$m = $m+10;

$ergebnis = $ergebnis + $td[$m];

echo "$td[$m]<br>";
}
echo "$ergebnis"; 
Deine Schleifenvariable ist $q und du addierst hier immer nur den Inhalt von $td[16], weil du zunächst $m=6 festlegst und in der Schleife immer wieder $m=$m+10 berechnest, was eben immer 16 ergibt!

Hilft dir das evtl. auf die Schliche?

Gruss,
Manne.

Verfasst: 03.10.2005 18:35
von Nico Haase
hehe, das kann natürlich sein. die ausgabe, die du in der schleife machst, erscheint auch nich? dann wird die schleife direkt übersprungen, weil $q < $i von vornherein false ergibt

Verfasst: 03.10.2005 18:38
von Ivan
mad-manne hat geschrieben:Deine Schleifenvariable ist $q und du addierst hier immer nur den Inhalt von $td[16], weil du zunächst $m=6 festlegst und in der Schleife immer wieder $m=$m+10 berechnest, was eben immer 16 ergibt!

Hilft dir das evtl. auf die Schliche?

Gruss,
Manne.
Das passt schon so, wie es ist!

ich will da einen Quelltext aufteilen.
Die ersten paar <td> sind nutzlos, deshalb lösch ich die.
hehe, das kann natürlich sein. die ausgabe, die du in der schleife machst, erscheint auch nich? dann wird die schleife direkt übersprungen, weil $q < $i von vornherein false ergibt
Doch, die Ausgabe, die ich in der Schleife mache, also "$td[$m]<br>" tut.

Gibts denn keine Möglichkeit, wie ich das Ergebnis auswerten kann??

Gruß
Ivan

Verfasst: 03.10.2005 18:46
von mad-manne
Ivan hat geschrieben:Das passt schon so, wie es ist!
Offenbar ja nicht :roll:

Abgesehen davon, dass mir jetzt nicht klar ist, ob deine Schleife überhaupt ausgeführt wird (siehe Anmerkung von Nico) addierst du immer den Wert aus $td[16] in dein Ergebniss!

Das erscheint mir relativ sinnfrei.

Welche Werte für $i vermutest du denn in deinem Script?

Gruss,
Manne.

Verfasst: 04.10.2005 13:44
von Ivan
ich hab was verwunderliches ausprobiert.

Code: Alles auswählen

for ($q=0; $q<$i; $q=$q+10)
{
$m = $m+10;

$ergebnis = $ergebnis + $q;

echo "$td[$m]_$q<br>";
}

echo "<br />$ergebnis";
Wenn ich es mit $ergebnis = $ergebnis + $q; mache, funktioniert es.
Das heisst, er zeigt mir nach der Schleife ganz normal das Additionsergebnis der Variablen $q an.

Das heisst ja, dass es funktionieren muss. Nur mit Arrays funktioniert es komischerweise nicht....oder sehe ich das falsch??

Gruß
Ivan

Verfasst: 04.10.2005 14:47
von mad-manne
Ivan hat geschrieben:Das heisst ja, dass es funktionieren muss. Nur mit Arrays funktioniert es komischerweise nicht....oder sehe ich das falsch??
Vermutlich ja :wink:

Lass uns mal was anderes machen ...
Welche Werte vermutest du denn eigentlich in dem Array $td?

Lass sie dir doch mal DEBUG-mässig so ausgeben:

Code: Alles auswählen

$fields = count($td);
for ( $loop=0; $loop <$fields; $loop++ )
{
echo 'TD-Feldindex# ' . $loop . ' ==> ' . $td[$loop] . '<br />';
}
Diesen Code packst du einfach mal ganz unten in dein Script ... was wird da ausgegeben?

Dann sehen wir weiter ...
Manne.

Verfasst: 04.10.2005 18:33
von Ivan
da kommt genau das raus:^^

http://web159.server-drome.info/td-feldindex.txt

Nicht wundern...das ist ne Transferliste eines Onlinegames :D

Gruß
Ivan