Arrays in Schleifen zusammenrechnen

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Benutzeravatar
mad-manne
Ehemaliges Teammitglied
Beiträge: 5403
Registriert: 18.03.2005 10:00
Wohnort: Marl im Ruhrgebiet

Beitrag von mad-manne »

Und wie ich schon oben sagte .. deine bisheriger Code addiert immer den Inhalt aus $td[16]!
Da kann nur 0 rauskommen, denn:
http://web159.server-drome.info/td-feldindex.txt hat geschrieben:TD-Feldindex# 16 ==> 0
Ich vermute mal, dass du in Wirklichkeit immer die n-te "Zeile" aus dem Array addieren willst? Ansonsten macht eine Addition ja gar keinen Sinn, da dort allerlei Daten im Array sind!

Die wievielte "Zeile" willst du denn jeweils addieren?
--> Ich schätzt mal ob deines bisherigen Konstrukts, dass du jeweils jede 10.te Zeile "brauchst" :wink:

NACHTRAG: Ein Blick auf die Daten lässt allerdings Zweifel daran zu :roll:

So long,
Manne.
Try not. Do or do not. There is no try. (YODA)
Supportanfragen via E-Mail oder PN werden ignoriert
Benutzeravatar
Ivan
Mitglied
Beiträge: 267
Registriert: 28.12.2004 17:26
Wohnort: Mössingen, BW
Kontaktdaten:

Beitrag von Ivan »

nö, ganz einfach.

Ich will ab dem 6. Feld jedes 10. dazu addieren.

also 6+16+26+36+46+....

Verstehst du??

Gruß
Ivan
Benutzeravatar
mad-manne
Ehemaliges Teammitglied
Beiträge: 5403
Registriert: 18.03.2005 10:00
Wohnort: Marl im Ruhrgebiet

Beitrag von mad-manne »

Dann lass uns doch mal eben noch prüfen, ob in diesen Feldern wirklich deine gewünschten Werte stehen.

Dazu ersetzt du meinen "DEBUG-Code" von gestern hiermit:

Code: Alles auswählen

$fields = count($td);
for ( $loop=5; $loop <$fields; $loop = $loop+10 )
{
echo 'TD-Feldindex# ' . $loop . ' ==> ' . $td[$loop] . '<br />';
} 
Wie sieht das dann aus?

weitere Frage .. wieso sind die ersten 9 Felder leer?

Gruss,
Manne.

P.S. Nicht wundern .. das sind schon jeweils die 6.ten Felder, da der Index beim Array mit 0 beginnt :wink:
Try not. Do or do not. There is no try. (YODA)
Supportanfragen via E-Mail oder PN werden ignoriert
Benutzeravatar
Ivan
Mitglied
Beiträge: 267
Registriert: 28.12.2004 17:26
Wohnort: Mössingen, BW
Kontaktdaten:

Beitrag von Ivan »

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

Der Grund, warum ich die ersten 9 Felder gelöscht habe ist folgender:
Die ersten 9 Felder haben die Überschriften zu den einzelnen Spalten enthalten.
Diese habe ich aber selbst neu geschrieben!

Gruß
Ivan
Benutzeravatar
Nico Haase
Mitglied
Beiträge: 1100
Registriert: 10.08.2003 15:19
Wohnort: Neu-Anspach / Darmstadt
Kontaktdaten:

Beitrag von Nico Haase »

probier mal $ergebnis = $ergebnis + (int)$td[irgendwas] - nimm also den ursprünglichen code und ergänz das (int), dadurch wird der wert im array in einen zahlenwert umgewandelt
Buchtips.net bietet mehr als 2500 Buchrezensionen
Benutzeravatar
mad-manne
Ehemaliges Teammitglied
Beiträge: 5403
Registriert: 18.03.2005 10:00
Wohnort: Marl im Ruhrgebiet

Beitrag von mad-manne »

*Nico: der ursprüngliche Code hat an anderer Stelle einen fehler!

Innerhalb der Schleife wird immer der Inhalt der 16.ten "Zeile" des Arrays addiert. Da dieser zufällig 0 ist, kommt auch immer 0 raus :wink:

*Ivan:
Sieht denn diese Liste http://web159.server-drome.info/td-feldindex.txt
so aus, als wären es die Werte die du addieren willst? Ich nehme doch mal an, dass es sich um Highscores oder sonstige erreichte Punkte bei einem Spiel handelt, oder?
Es haben sehr viele nur 0 Punkte! Kommt denn das hin, oder brauchst du bei Betrachtung der obigen Liste doch eher ein anderes Feld?

So long,
Manne.
Try not. Do or do not. There is no try. (YODA)
Supportanfragen via E-Mail oder PN werden ignoriert
Benutzeravatar
Ivan
Mitglied
Beiträge: 267
Registriert: 28.12.2004 17:26
Wohnort: Mössingen, BW
Kontaktdaten:

Beitrag von Ivan »

ja, eigentlich brauch ich ja ab der 16. jedes 10.

Gruß
Ivan
Benutzeravatar
mad-manne
Ehemaliges Teammitglied
Beiträge: 5403
Registriert: 18.03.2005 10:00
Wohnort: Marl im Ruhrgebiet

Beitrag von mad-manne »

und wenn du dir jetzt meinen Codeschnipsel anschaust .. kommst du drauf, wo bei dir der Wurm drin war :roll:

Wenn du's nicht rausbekommst ... dann verrate ich es dir. :wink:

Viel Spass beim forschen,
Manne.
Try not. Do or do not. There is no try. (YODA)
Supportanfragen via E-Mail oder PN werden ignoriert
Benutzeravatar
Ivan
Mitglied
Beiträge: 267
Registriert: 28.12.2004 17:26
Wohnort: Mössingen, BW
Kontaktdaten:

Beitrag von Ivan »

sry, ich find den Fehler net.
Hast du ihn gefunden??

Gruß
Ivan
Benutzeravatar
mad-manne
Ehemaliges Teammitglied
Beiträge: 5403
Registriert: 18.03.2005 10:00
Wohnort: Marl im Ruhrgebiet

Beitrag von mad-manne »

Ivan hat geschrieben:Hast du ihn gefunden??
Na klar 8)
... du nutzt eine unnötige Variable innerhalb deiner Schleife, nämlich $m, obwohl du ja in der Schleife bereits die Schleifenvariable $q einsetzen könntest, um jeweils die passenden "Zeilen" des Arrays zu deinem Ergebniss zu addieren.
Das wäre aber nicht so schlimm gewesen, da du mit $m ja eine unötige aber trotzdem funktionierende Zusatzschleifenvariable hast ...
der Fehler liegt im falschen "Startindex", da arrays im Normalfall ab 0 indiziert werden. Deine gewünschten 6-ten Zeilen findest du also in 5, 15, 25 ... usw. :wink:

Hier ist also dein Skript leicht umgeschrieben:

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;
// diese Variable ist unnötig und "falsch", da sie dir so wie du sie nutzt
// immer die siebte "Zeile" aus dem Array $td liefert, da Arrays ab 0 indiziert werden !!

// sauberer Stil ist es, Variablen vorher auf einen sinnvollen Startwert zu setzen
$ergebnis = 0;

for ($q=15; $q<$i; $q=$q+10)
{
// $m = $m+10;
// du nutzt jetzt einfach die Schleifenvariable $q als "Zeilen"-Index für $td!

// und dann nutzen wir die Funktion intval(), um "echte" Ganzzahlen aus dem Array zu bekommen
$ergebnis = $ergebnis + intval($td[$q]);

echo "$td[$q]<br>";
}
echo "$ergebnis";
?>
</body>
</html>
Gruss,
Manne.
Try not. Do or do not. There is no try. (YODA)
Supportanfragen via E-Mail oder PN werden ignoriert
Antworten

Zurück zu „Coding & Technik“