Hi Nicole,
Ich möchte doch nur erfahren, ob array_rand()
unter umständen doppelte ausgibt.
Da diese Frage nicht zu beanworten ist versuchte ich auf dein vermutetes Problem einzugehen: die Serverlast.
Aber anscheinden gibt es hier niemanden der es genau weiss,
nur Vermutungen.
Es ist offensichtlich nicht dokumentiert. Möchtest du dich in deinen Scripten auf eine undokumentierte Eigenschaft verlassen?
Praktisch erzeugt es wohl keine doppelten, denn die wären bei kleinen (Test) Arrays recht wahrscheinlich und würden sofort auffallen.
Shuffle() ??
Ja das wäre auch gut,
leider ist der Zufallsgenerator nicht gerade gut bei dieser
Funktion, und es funktioniert nur bei numerischen arrays.
Ersteres erscheint unplausibel - der Zufallsgenerator ist AFAIK immer der gleiche, sonst würde das srand() vorher keinen Sinn ergeben. Das es nur numerische Indices verkraftet würde ich mal als Bug bezeichnen, es steht nirgends und macht auch keinen Sinn :-(.
Dann also $k=array_keys($dein_Feld); $k=shuffle($k); $k=array_slice($k,0,$anzahl); in $k stehen dann die Schlüssel zu deinem Feld in zufälliger Reihenfolge (also das was $k=array_rand($dein_array,$anzahl); auch liefern würde). Aber ob das schneller ist?
Doch die Serverlast bei array_unique fällt
leider auf. Ist ja auch klar jeder Neueintrag wird mit Inhalt verglichen auf vorhanden ;-)
Wie gesagt, das hängt von der Menge der benötigten Elemente ab, aber die verrätst du uns ja nicht ;-)
Mit $k=array_flip($k); $k=array_flip($k); kannst du auch doppelte aussortieren, solange im Array nur Integer und Strings stehen - evtl. ist das fixer.
Gruss,
Carsten