从PHP关联数组中选择一个随机元素

时间:2011-08-26 18:36:55

标签: php random associative-array

我在PHP中有一个关联数组,想要从中选择一个随机键/值对。这是我到目前为止所做的:

初​​始化。

$locations = array();

循环访问SQL查询并添加键/值对:

array_push($locations, "'$location_id' => '$location_name'");

稍后,我选择数组的随机索引:

$rand = array_rand($locations);
兰德只是一个数字。因此,[$ rand]位置给了我类似的东西:

'1' => 'Location 1'

好的,一个assoc数组元素。此时,我不知道这个assoc数组的关键,所以我尝试了以下内容:

foreach($locations[$rand] as $loc_id => $location_name) { 
    echo "$key : $value<br/>\n";
}

$loc_id, $location_name = each($locations[$rand]);

$location_name = $locations[key($rand)];

这3次尝试都不起作用。它们都会抛出错误,例如“传递的变量不是数组”。

我确信有一些简单的1衬里可以从阵列中提取随机键/值对。或者我的语法已关闭。我非常感谢你的帮助。

3 个答案:

答案 0 :(得分:28)

$array = array('a' => 1, 'b' => 2);
$key = array_rand($array);
$value = $array[$key];

答案 1 :(得分:5)

array_rand()返回数组中的键,而不是值。你可以使用:

$location_name = $locations[$rand];

获取位置名称。

这是一个完整的例子:http://codepad.org/zR2YdMGN

只需点击提交几次,您就会看到随机工作。

答案 2 :(得分:1)

你的推动是错误的

$locations[$location_id] = $location_name;

应该是

所以,在你的问题中没有选择随机元素 总是调试你的代码,只是为了看看你在使用它之前是否有适当的数据