0

在这个线程中,Pudge601 非常好心地为我的问题提供了一个解决方案: Php/MySQL 随机数据(音乐音高)序列

通过用静态值替换随机值,我弄清楚了 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 在这种情况下使用多维数组时可能语法不同?无论如何,我只是不明白。如果有人能帮我翻译成“英语”,我将不胜感激!

4

2 回答 2

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

文档中:

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

于 2013-06-07T03:17:53.803 回答
0

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

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

于 2013-06-08T06:51:56.960 回答