PHP如何从多维数组中获取随机元素?

时间:2014-01-26 13:54:44

标签: php arrays multidimensional-array

说我有以下数组:

$var = array( 
"green" => array("one", "two"), 
"red" => array("three", "four"),
"yellow" => array("five", "six")
);

我需要编写哪些代码才能生成任意数字的随机输出?

我已经尝试了以下内容,这将给我一个"一个","三个"或者"五"。

$section = array_rand($var);
echo $var[$section][0];

但是我似乎无法将密钥随机化,因此它将随机选择一种颜色,然后随机选择该颜色中的数字。我显然有一个昏暗的时刻。任何人都可以开导我吗?感谢。

2 个答案:

答案 0 :(得分:6)

array_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;
}

and ofcourse

echo getrandomelement($var);

修改

如果不清楚,上述功能适用于任何尺寸,即使尺寸不同(非方形/立方体)。

答案 1 :(得分:5)

在这种情况下

The short way to get random element

$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