Variablennamen hochzählen?

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.
P7BB
Mitglied
Beiträge: 383
Registriert: 15.07.2008 19:40

Re: Variablennamen hochzählen?

Beitrag 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 /">;
}

?>
Benutzeravatar
gn#36
Ehrenadmin
Beiträge: 9313
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Re: Variablennamen hochzählen?

Beitrag 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.
Begegnungen mit dem Chaos sind fast unvermeidlich, Aber nicht katastrophal, solange man den Durchblick behält.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
Benutzeravatar
Dungeonwatcher
Mitglied
Beiträge: 635
Registriert: 11.07.2004 10:04
Wohnort: Berlin

Re: Variablennamen hochzählen?

Beitrag 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
Antworten

Zurück zu „Coding & Technik“