Hi,
also ich bin etwas am grübeln,
ich versuche Momentan einen Zufallsgenerator zu basteln das klappt soweit auch mit mt_rand ganz gut - allerdings soll eine Bedingung erfüllt werden, und zwar als Beispiel:
$inhalt = array ("bla1","bla2","bla3","bla4","bla5");
$ausgabe = mt_rand(0,count($inhalt)-1);
echo "<font size=\"3\"> $inhalt[$ausgabe] </font>";
so ok - klappt ja auch alles ... jetzt will ich aber z.b das "bla2" MAXIMAL 30 mal mitberechnet wird - also , das beim 30. aufruf von "bla2" der Array Eintrag einfach nicht mehr interpretiert wird. bzw "gelöscht" oder wie auch immer - ich will also die einzelnen Einträge beschränken!
Freundlicher Helfer gab mir den Tipp ich solle einen Counter in das ganze integrieren der bei z.b eben 30mal aufgerufenem "bla2" die variable killt .. klingt ja auch logisch nur krieg ichs absolut nicht auf die Reihe.
Ich bitte um Eure Hilfe is relativ dringend
mfg
Seite 1 von 1
Zufallsgenerator Php begrenzte ausgabe
#1
geschrieben 18. Oktober 2007 - 13:46
Pc is my life, amd my world, intel my enemy and Linux my Hell
Anzeige
#2
geschrieben 18. Oktober 2007 - 19:52
Du könntest z.B. mittels array_flip ein Array erstellen, welches als Schlüssel die Werte aus dem $inhalt-Array enthält. Dieses neue Array verwendest du dann dazu, um die Ausgabe eines bestimmten Wertes zu zählen, z.B. mittels array_key_exists.
Hab das jetzt nicht getestet, ist einfach nur so eine Idee. Jedenfalls wird ein Wert so automatisch aus dem $inhalt-Array gelöscht, nachdem er z.B. 30mal verwendet wurde. Deswegen braucht die echo-Anweisung auch kein if mehr, denn wenn beim 30. Mal der Wert aus dem $inhalt-Array gelöscht wird, soll er ja dennoch ausgegeben werden. Danach taucht der Wert sowieso nicht mehr auf.
Hoffe ich konnte dir helfen
$inhalt = array ("bla1","bla2","bla3","bla4","bla5"); $zaehler = array_flip($inhalt); // Allen Elementen den Anfangswert "Null" zuweisen foreach($zaehler as $wert=>$anzahl) { $zaehler[$wert] = 0; } $ausgabe = mt_rand(0,count($inhalt)-1); // Zähler für Wert um 1 erhöhen und Wert ggf. aus $inhalt löschen if(array_key_exists($ausgabe, $zaehler)) { $zaehler[$ausgabe] += 1; if($zaehler[$ausgabe] >= 30) { // array_search findet den zum Wert gehörenden Schlüssel unset($inhalt[array_search($ausgabe, $inhalt)]); } } echo "<font size=\"3\"> $inhalt[$ausgabe] </font>";Edit: noch einen kleinen Fehler beseitigt.
Hab das jetzt nicht getestet, ist einfach nur so eine Idee. Jedenfalls wird ein Wert so automatisch aus dem $inhalt-Array gelöscht, nachdem er z.B. 30mal verwendet wurde. Deswegen braucht die echo-Anweisung auch kein if mehr, denn wenn beim 30. Mal der Wert aus dem $inhalt-Array gelöscht wird, soll er ja dennoch ausgegeben werden. Danach taucht der Wert sowieso nicht mehr auf.
Hoffe ich konnte dir helfen
Dieser Beitrag wurde von dblay bearbeitet: 18. Oktober 2007 - 19:54
Zeit ist, was verhindert, dass alles gleichzeitig passiert.
#3
geschrieben 18. Oktober 2007 - 20:12
Ich kann dir den Source Code meiner Seite (www.skaroth.net) schicken, da ist auchn Zufallsgenerator
Der Code ist aber noch nicht objektorientiert und daher ein wenig unübersichtlich.
Der Code ist aber noch nicht objektorientiert und daher ein wenig unübersichtlich.
#4
geschrieben 18. Oktober 2007 - 20:48
@dblay - Danke für das Script, allerdings funzt das so nicht ganz , er zählt die counts nich weiter =/ und vorallem wären hier alle array inhalte gleichermaßen betroffen. ich bräuchte ein script wo ich jedem array eintrag ne eigene wertung geben kann wie oft er erscheinen darf. ... ok ich denk das kann man da draus sicher basteln allerdings.. wie gesagt ich bin noch net so versiert mit dem ganzen =/ sry -
@skaroth ... wäre sehr sehr sehr nett .. nru die Frage kann dein Source das was ich brauche? also was ich eben oben zu dblay beschrieben habe? .. .. bin momentan echt am verzweifeln mit dem ganzen
@skaroth ... wäre sehr sehr sehr nett .. nru die Frage kann dein Source das was ich brauche? also was ich eben oben zu dblay beschrieben habe? .. .. bin momentan echt am verzweifeln mit dem ganzen
Pc is my life, amd my world, intel my enemy and Linux my Hell
Thema verteilen:
Seite 1 von 1