如何从 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]
.
我有一个最初由 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]
.