如何从php中的多维数组中获取随机元素

时间:2015-08-07 17:43:08

标签: php arrays random multidimensional-array shuffle

我有一个多维数组,最初由post变量组成,看起来像这样:

$easys = array(
array($easy1min,$easy1max,$easy1enc),
array($easy2min,$easy2max,$easy2enc),
array($easy3min,$easy3max,$easy3enc),
array($easy4min,$easy4max,$easy4enc),
array($easy5min,$easy5max,$easy5enc),
array($easy6min,$easy6max,$easy6enc),
array($easy7min,$easy7max,$easy7enc),
array($easy8min,$easy8max,$easy8enc),
array($easy9min,$easy9max,$easy9enc),
array($easy10min,$easy10max,$easy10enc)
);

我试图从中返回一个随机结果。

我的功能尝试shuffle看起来像这样:

$shuffle($easy_encounters);
$num = rand($easy_encounters[0][0],$easy_encounters[0][1]);
return "(".$num.") ".$easy_encounters[0][2];

给出

  

" shuffle期望参数1为数组.."

我也尝试了iterator_to_array:

$easy_encounters = iterator_to_array($easy_encounters);

返回错误

  

"可捕获的致命错误:传递给iterator_to_array()的参数1必须实现Traversable接口..."

然后有几次尝试使用array_rand的各种语法,例如:

$easy_encounters = array_rand($easy_encounters);
$num = rand($easy_encounters [0][0],$easy_encounters [0][1]);
return "(".$num.") ".$easy_encounters [0][2];

$random_obj = $easy_encounters[array_rand($easy_encounters)];
$num = rand($random_obj[0][0],$random_obj[0][1]);
return "(".$num.") ".$random_obj[0][2];

我觉得我一直在打这个。我承认在得到Traversable错误后可能还没有完全理解iterator_to_array的使用。

感谢任何帮助。我已经在SO周围跋涉,这就是我已经使用过的例子。

2 个答案:

答案 0 :(得分:1)

首先我不认为你可以使用$shuffle(argument)它是一个函数而不是一个变量,删除$,然后在代码的第一部分使用$easys,然后{ {1}}改变它。在两个文件中使用相同的变量名称。

答案 1 :(得分:1)

$randomArray = array_rand($easy_encounters); 
echo $easy_encounters[$randomArray][array_rand($easy_encounters[$randomArray])];

首先得到一个随机数组。然后从数组中获取一个随机值。

$randomArray$easy_encounters内的随机数组。所以底线是echo $easy_encounters[$randomArray][$randomElement inside $randomArray]