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

2022-08-30 19:46:59

我在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衬里可以从数组中随机提取键/值对。或者我的语法关闭了。我真的很感激你的帮助。


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

答案 2

array_rand() 从数组返回一个键,而不是一个值。您只需使用:

$location_name = $locations[$rand];

获取位置名称。


下面是一个完整的示例:http://codepad.org/zR2YdMGN

只需单击几次提交,您将看到随机工作。


推荐