String füllen aus Array


Grunge

Erfahrenes Mitglied
#1
Hey Leute,

sorry für den Titel. Mir ist jetzt echt nichts besseres eingefallen.
Ich geht um folgendes:
Ich möchte mehrere Datenbankeinträge setzen. Diese bestehen aus zusammengehangenen Strings. Das verlangt Wordpress bzw Buddypress so bzw so arbeitet es..
Jetzt will ich aus einem Array, welches die entsprechenden String Teile enthält immer zufällig eine bestimmte Anzahl X auswählen, wobei jeder Begriff nur einmal vorkommen darf.

Sieht bei mir bisher so aus:

Code:
//In dieser Form muss jeder der einzelnen Begriffe leider gespeichert werden: s:9:Sportart;
$sportarten = array("s:9:\"Fußball\";", "s:9:\"Handball\";", "s:9:\"Basketball\";", "s:9:\"Golf\";");

//zufällige Anzahl der entsprechenden Sportarten
//Sprich: wieviele der Sportarten sollen gespeichert werden

$anzahl = rand(1,4);
$output = ""; //Hier sollen die Strings aneinandergereiht werden
//Schleife durchlaufen

for($i = 0; $ i< $anzahl; $i++){  //Ab hier hakt es bei mir

}
Meine Probleme sind jetzt folgende, vielleicht bin ich auch einfach zu "blond" heute...

a) Wie picke ich jetzt am gescheitesten einen Eintrag raus? Is klar mit: $sportarten[rand(0,4)] kommt ich da ran aber dann...

b)... habe ich das Problem, dass diese Sportart ja nicht nocheinmal in den String output hineinkann. Wie stelle ich sicher, dass dies nicht nochmal passiert? Ich könnte natürlich prüfen ob die Sportart in dem String schon vorhanden ist, aber wie realisiere ich dann, dass er eine neue random Sportart auswählt, außer die, die schon gespeichert ist? Also ohne den Schleifendurchgang für dieses $i zu verlassen?


Hoffe ihr wisst weiter...
Ich danke euch im Voraus ;)

LG
 

Sempervivum

Erfahrenes Mitglied
#2
Diese Aufgabenstellung tritt häufig auf. Lösung, indem man das Array mischt (shuffle) und dann die ersten $anzahl Einträge ausliest. Dann kann kein Eintrag mehrfach gelesen werden.
 

Sempervivum

Erfahrenes Mitglied
#4
Gern, ich habe dein Beispiel erweitert:
Code:
//In dieser Form muss jeder der einzelnen Begriffe leider gespeichert werden: s:9:Sportart;
$sportarten = array("s:9:\"Fußball\";", "s:9:\"Polo\";", "s:9:\"Tennis\";", "s:9:\"Handball\";", "s:9:\"Basketball\";", "s:9:\"Golf\";");

//zufällige Anzahl der entsprechenden Sportarten
//Sprich: wieviele der Sportarten sollen gespeichert werden

$anzahl = rand(1, 4);
shuffle($sportarten);
$output = ""; //Hier sollen die Strings aneinandergereiht werden
//Schleife durchlaufen
for ($i = 0; $i < $anzahl; $i++) { //Ab hier hakt es bei mir
    $output .= $sportarten[$i];
}
var_dump($output);
 

Sempervivum

Erfahrenes Mitglied
#6
Verstehe ich nicht. Ich habe den Code aus #4 noch Mal zurück in meine Testdatei kopiert und es funktioniert einwandfrei. Ausgabe z. B.:
Code:
D:\Gemeinsame Dateien\Webentwicklung\test4.php:33:string 's:9:"Basketball";s:9:"Golf";s:9:"Handball";' (length=43)
Hast Du etwas am Code verändert?
 

Grunge

Erfahrenes Mitglied
#7
Okay es funktioniert jetzt Sempervivum...Danke dir nochmal für deinen schnellen Tipp. Die Seite war einfach noch mit dem Fehlerhaften Code irgendwie gecached lach...
 

Neue Beiträge