PHP如何从多维数组中获取随机元素?
假设我有以下数组:PHP如何从多维数组中获取随机元素?,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,假设我有以下数组: $var = array( "green" => array("one", "two"), "red" => array("three", "four"), "yellow" => array("five", "six") ); 我需要编写什么代码来生成任意数字的随机输出 我试过下面的方法,可以得到“一”、“三”或“五” 然而,我似乎不能随机化的关键,所以它会随机选择一种颜色,然后随机选择一个数字在该颜色。很明显,我现在心情不好。谁能启发我?谢谢。在这
$var = array(
"green" => array("one", "two"),
"red" => array("three", "four"),
"yellow" => array("five", "six")
);
我需要编写什么代码来生成任意数字的随机输出
我试过下面的方法,可以得到“一”、“三”或“五”
然而,我似乎不能随机化的关键,所以它会随机选择一种颜色,然后随机选择一个数字在该颜色。很明显,我现在心情不好。谁能启发我?谢谢。
在这种情况下,获取随机元素的捷径是:
$var = array(
"green" => array("one", "two"),
"red" => array("three", "four"),
"yellow" => array("five", "six")
);
$section = array_rand($var); //here yoy get random first of array(green or red or yellow)
echo $var[$section][array_rand($var[$section])]; //here you get random element of this array
array\u rand()
将随机化整个数组。这意味着它会
- 消耗大量的熵
- 如果阵列较大,则使用相当多的CPU马力
- 使用最多的RAM创建阵列的副本
所以我更喜欢
function getrandomelement($array) {
$pos=rand(0,sizeof($array)-1);
$res=$array[$pos];
if (is_array($res)) return getrandomelement($res);
else return $res;
}
当然
echo getrandomelement($var);
编辑
如果不清楚,上述函数将适用于任何尺寸,即使是不同尺寸(非正方形/立方体)。非常好的解决方案!(喜欢递归性。)这对上面的数组不起作用,它只在有键的情况下起作用。如何对其进行调整以同时处理键的值?调整是$res=$array[array_keys[$pos]]
在函数内部,我无法使上述操作正常工作,因为当我尝试$res=$array[array\u keys($pos)]
时,我遇到了一个错误,与$pos是整数而不是数组有关。然而,我已经调整了我正在做的一点,所以它仍然是有用的。谢谢。@Whitenoise它应该是array\u key($array)[$pos]
谢谢你的帮助,也解释得很好。希望有用)
echo getrandomelement($var);