Seite 2 von 2

Re: Variablennamen hochzählen?

Verfasst: 12.08.2010 11:45
von P7BB
Du musst bei einem Array keine Variablennamen hochzählen. Deine Methode würde erstmal den Variablennamen erzeugen und dann aus der Variable lesen/in die Variable schreiben.
Bei Arrays hast du eine feste Variable und gibst nur den Index an.

Links zur Erklärung von Arrays hast du übrigens aber auch schon bekommen:
Ansonsten noch mal ein Beispiel:

Code: Alles auswählen

<?php
$meinArray = array("wert1","wert2","wert3","wert4"); // können beliebig viele Elemente drinstehen
for($i = 0;$i < sizeof($meinArray);$i++) {
 echo $meinArray[$i]."<br /">;
}

?>

Re: Variablennamen hochzählen?

Verfasst: 12.08.2010 15:11
von gn#36
Ich habe mir mal erlaubt dein Skript sinngemäß umzubauen, so dass es mit Arrays arbeitet:

Code: Alles auswählen

//Array "anz" für anzahl
//Array "gewinn" für das Ergebnis
//array "ursprung" für das was man reingibt
//array "summe_anz" für die bisherige Anzahl
$summe_anz = 0;
for($i = 0; $i < 3; $i++)
{
    //Wenn insgesamt auf den bisherigen Plaetzen nur so viele Personen waren wie es Plaetze gibt...
    if($anz[$i] == 1 && $summe_anz <= $i)
    {
        $gewinn[$i] = $ursprung[$i];
    }
    //Diesen Platz auslassen bei mehr vergebenen als bisherigen Plaetzen:
    elseif($summe_anz > $i)
    {
        //Hier muss man nix tun
    }
    //Einzig verbleibender Fall: Mehr personen auf diesem aktuellen Platz:
    else
    {
        //Gewinn der folgenden Plaetze summieren und durch die Zahl der Gewinner teilen:
        $sum = 0;
        for($j = $i; $j <= $anz[$i]; $j++)
        {
            $sum = $sum + $ursprung[$j];
        }
        $gewinn[$i] = $sum / $anz[$i];
    }
    // Noch die Personenzahl hochzaehlen:
    $summe_anz = $summe_anz + $anz[$i];
} 
Sinngemäß deshalb, weil ich versucht habe zu interpretieren, was du da vorhast. Du musst nur noch die Arrays $anz und $ursprung füllen, wobei ersteres die Anzahl der Gewinner ist, die sich den Preis teilen und zweiteres der Gewinn der für den jeweiligen Platz vorgesehen ist. Wird ein Platz mehrfach vergeben, dann fallen die Folgeplätze so lange weg, bis die Zahl der schon verarbeiteten Gewinner wieder mit dem gerade vergebenen Platz übereinstimmt (d.h. bei zwei ersten Plätzen fällt der zweite weg und der nächste vergebene ist der dritte, bei drei ersten fällt auch der dritte weg usw.).

Der Vorteil an Arrays liegt in deren Skalierbarkeit. Das Skript ist zwar für deine drei Plätze ähnlich lang wie in deinem Fall, aber wird für mehr Plätze auch nicht mehr länger, sondern es ändert sich nur die Arraygröße und ein paar Zahlenindizes. Du kannst Arrays einfacher auf gleiche Weise verarbeiten (in Schleifen nämlich). Während du den gleichen Code drei mal hast (und bei mehr Plätzen entsprechend noch öfter) schreibe ich mit den Arrays alles nur ein ein einziges mal hin. Das ist viel übersichtlicher.

Re: Variablennamen hochzählen?

Verfasst: 23.08.2010 17:09
von Dungeonwatcher
Hi! 8)

Sorry für meine späte Reaktion. Mein Dienstherr und dazu noch quälende Helikobakter Magenschmerzen halten mich zur Zeit ziemlich von meinem Hobby ab. :cry:
gn#36 hat geschrieben:Ich habe mir mal erlaubt dein Skript sinngemäß umzubauen, so dass es mit Arrays arbeitet:
O.k., ich versuche es mal die nächsten Tage zu verstehen.

Bye