从数组列表中选择一个随机数组

时间:2016-12-13 16:53:17

标签: php arrays random

PHP中有没有办法从数组列表中选择一个随机数组?这是我的代码:

$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";

我想这样做它从数组列表中选择一个随机数组,但我无法弄清楚如何。我试过了

$array . rand(1,9)

但不幸的是,PHP不会像我想要的那样编​​译..

3 个答案:

答案 0 :(得分:1)

如果您要将所有这些数组放在另一个数组中,可以使用arr0 = [[0,50],[60,80],[100,150]] # 0-50, 60-80, etc. arr1 = [[4,8],[15,20]] # 4-8, 15-20, etc. # arr0 - arr1 magic result = [[0,3],[9,14],[21,50],[60,80],[100,150]] # 0-3, 9-14, etc. 选择一个随机数组。

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

根据您输入的位置,这可能对您不起作用,但我更倾向于使用此解决方案在两个硬限制之间生成随机数,因为前者是动态的(无论多少条目都无关紧要)在数组的数组中),而后者不是(虽然它可以成为)。

正如GordonM所指出的,array_rand使用libc随机数生成器,已知它比某些替代方案慢。使用更好的随机数生成器的动态替代方法是使用array_rand,使用数组的长度作为最大值:

mt_rand

编辑:正如Jacopo在评论中指出的那样,值得注意的是你的数组目前是字符串。

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

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

应该(我假设):

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

答案 1 :(得分:0)

你可以这样做:

$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
- ...
*/

希望这有帮助!

答案 2 :(得分:0)

你有一个简单的变量,而不是一个数组。试试这个:

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

然后转换为数组:

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

最后,打印:

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

此致