【问题标题】:Use of array_rand function with multidimensional arrayarray_rand 函数与多维数组的使用
【发布时间】:2013-06-07 02:41:03
【问题描述】:

在这个帖子中,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 在这种情况下使用多维数组时,语法可能不同?无论如何,我只是不明白。如果有人能帮我翻译成“英语”,我将不胜感激!

【问题讨论】:

  • 如果你能理解$dists[$index][0],为什么不$dists[$index][array_rand($dists[$index])]?在这个array_rand($dists[$index]) 返回一个数字,例如0,所以只要在心里替换它就可以了。

标签: php arrays random multidimensional-array


【解决方案1】:

代码应该读作:

$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() 会返回随机条目的密钥。

【讨论】:

  • 谢谢,但我一直在看这个,但它仍然没有点击。我认为 array_rand 函数只选择一个条目。我只是没有看到它是如何在第二级嵌套中选择其中一个数组的。例如: "array(4,3,3),array(3,4,3),array(3,3,4))," 在我看来 $dists[$index] 应该是指第一级在这两种用法中嵌套 - 我认为这让我感到困惑。
  • $dists[$index] 本身就是一个数组;不确定这是否会造成混乱?
  • 嗯。基本上,我可以感觉到我在这里的知识存在一些差距,这将使我能够理解这种结构是如何工作的——但我不知道用什么术语来描述这种差距。如果我知道,我会知道的!感谢您的尝试。如果我能更清楚地说明问题所在,我稍后会附加一些内容。
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-03
    • 2018-03-26
    • 1970-01-01
    • 1970-01-01
    • 2011-01-31
    • 1970-01-01
    相关资源
    最近更新 更多