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

How to get random element from multidimensional array in php

我有一个最初由 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)
);

我正在尝试 return 一个随机结果。

我尝试随机播放的函数如下所示:

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

给予

"shuffle expect parameter 1 to be array.."

我也试过了iterator_to_array:

$easy_encounters = iterator_to_array($easy_encounters);

哪个return错误

"Catchable fatal error: Argument 1 passed to iterator_to_array() must implement interface 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 周围跋涉,这是我得到迄今为止使用过的示例的地方。

首先我认为你不能使用 $shuffle(argument) 是函数而不是变量吗,删除 $,其次你在代码的第一部分使用了 $easys 并且然后 $easy_encounters 洗牌。在两者中使用相同的变量名。

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

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

$randomArray$easy_encounters里面的随机数组。所以最后一行是 echo $easy_encounters[$randomArray][$randomElement inside $randomArray].