2016-12-13 20 views
0

Gibt es eine Möglichkeit in PHP, ein zufälliges Array aus einer Liste von Arrays auszuwählen? Dies ist mein Code:Auswählen eines zufälligen Arrays aus einer Liste von Arrays

$array1 = "FFFFFF 000000 111111 222222 333333 444444"; 
$array2 = "1111 2222 3333 4444 5555 6666"; 
$array3 = "111 222 333 444 555 666"; 
$array4 = "11 22 33 44 55 66"; 
$array5 = "a b c d e f"; 
$array6 = "1 2 3 4 5 6"; 

Ich will es machen, so dass es eine zufällige Anordnung von dieser Liste von Arrays nimmt, aber ich kann einfach nicht herausfinden, wie. Ich habe versucht,

$array . rand(1,9) 

aber leider wird PHP, dass nicht kompilieren, wie ich es will ..

+0

Wenn Sie nummerierte Variablen verwenden, sollten Sie wahrscheinlich ein verwenden Array. Also '$ array []' etc ... – AbraCadaver

+4

Diese "Arrays" sind eigentlich nur Strings? – Jacopo

+0

Erstellen Sie ein Array von Arrays, und verwenden Sie dann mt_rand, um das Array nach dem Index – GordonM

Antwort

1

Wenn Sie alle diese Felder in einer anderen stellen sind, Sie array_rand verwenden könnten einen gelegentlichen wählen .

http://php.net/manual/en/function.array-rand.php

Dies kann für Sie je nach nicht funktionieren, wo Sie Ihre Eingabe sind immer aus, aber ich würde diese Lösung zu erzeugen, eine Zufallszahl zwischen zwei harten Grenzen bevorzugen, da erstere dynamisch ist (es doesn Es spielt keine Rolle, wie viele Einträge sich im Array von Arrays befinden, während letzteres nicht der Fall ist (obwohl dies möglich wäre).

Wie GordonM wies darauf hin, verwendet array_rand die libc Zufallszahlengenerator, der bekannterweise langsamer als einige Alternativen ist. Eine dynamische Alternative eines besseren Zufallszahlengenerator verwenden wäre mt_rand zu verwenden, um die Länge des Arrays als Maximum mit:

$array = array(
    // all your other arrays here 
); 

$selected = $array[mt_rand(0, count($array) - 1)]; 

EDIT: Wie Jacopo in den Kommentaren darauf hingewiesen, es ist auch erwähnenswert, dass Ihre Arrays derzeit Zeichenfolgen.

$array1 = "FFFFFF 000000 111111 222222 333333 444444"; 

Sollte sein (ich nehme an):

$array1 = array('FFFFFF', '000000', '111111', '222222', '333333', '444444'); 
+0

zu selektieren. Array_rand verwendet einen ziemlich schlechten Zufallszahlengenerator. Es spielt keine Rolle, aber Sie sollten sich dessen bewusst sein. – GordonM

0

Sie es wie folgt tun:

$array1 = "FFFFFF 000000 111111 222222 333333 444444"; 
$array2 = "1111 2222 3333 4444 5555 6666"; 
$array3 = "111 222 333 444 555 666"; 
$array4 = "11 22 33 44 55 66"; 
$array5 = "a b c d e f"; 
$array6 = "1 2 3 4 5 6"; 

$a = rand(1,6); 
$str = 'array'.$a; 
$arr = ${$str}; 
var_dump($arr); 

/* 
This would give you random array variables like this: 
- $array2 
- $array5 
- $array1 
- $array3 
- ... 
*/ 

hoffe, das hilft!

+0

'ReflectionClass'? Was? – AbraCadaver

+0

@AbraCadaver - Siehe dies - http://culttt.com/2014/07/02/reflection-php/ –

+0

Ich weiß, was es ist, aber Sie würden es nicht in diesem Fall verwenden und es ist nirgendwo in Ihrer Antwort, also Warum hast du es erwähnt? – AbraCadaver

0

Sie haben eine einfache Variable, kein Array. Versuchen Sie folgendes:

$array1 = "FFFFFF 000000 111111 222222 333333 444444"; 
$array2 = "1111 2222 3333 4444 5555 6666"; 

konvertieren Dann Array:

$a = explode(" ", $array1); 
$b = explode(" ", $array2); 

Und schließlich Druck:

echo array_rand($a,3); 
echo array_rand($b,3); 

Grüße

Verwandte Themen