在这个帖子中,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 在此上下文中使用多维数组时,语法可能不同?无论如何,我只是没有得到它。如果有人可以帮我翻译成英文,我会感激不尽!
答案 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
如果您只选择一个条目,
array_rand()
将返回随机输入的密钥。
答案 1 :(得分:0)
后来在这个讨论中解决了同样的问题: http://www.codingforums.com/showthread.php?t=296450
答案:在$dist = $dists[$index][array_rand($dists[$index])];
中,第一次使用$dists[$index]
将结果本地化为第一个嵌套数组之一,第二次使用确保它与array_rand函数的数组相同从中挑选。