将array_rand函数与多维数组一起使用

时间:2013-06-07 02:41:04

标签: php arrays random multidimensional-array

在这个帖子中,Pudge601非常善于为我的问题提供解决方案: Php/MySQL random data (musical pitch) sequences

通过将静态值替换为随机值,我弄清楚了while循环是如何工作的。但是,我仍然试图理解这一行:

$dist = $dists[$index][array_rand($dists[$index])];

当我替换(例如)时,我能理解它

$dist = $dists[$index][0]

从一个嵌套数组中检索第一个数组值。 但是,我不知道这部分是怎么回事:

[array_rand($dists[$index])];

生成一个所需的值。

它似乎与此处的描述不对应: http://php.net/manual/en/function.array-rand.php 在此上下文中使用多维数组时,语法可能不同?无论如何,我只是没有得到它。如果有人可以帮我翻译成英文,我会感激不尽!

2 个答案:

答案 0 :(得分:2)

代码应为:

$arr = $dists[$index]; // select array from $dists element at index $index
$key = array_rand($arr); // get key of a random element
$dist = $arr[$key]; // get element value

来自documentation

  

如果您只选择一个条目,array_rand()将返回随机输入的密钥。

答案 1 :(得分:0)

后来在这个讨论中解决了同样的问题: http://www.codingforums.com/showthread.php?t=296450

答案:在$dist = $dists[$index][array_rand($dists[$index])];中,第一次使用$dists[$index]将结果本地化为第一个嵌套数组之一,第二次使用确保它与array_rand函数的数组相同从中挑选。