我在PHP中有一个关联数组,并希望从中选择一个随机的键/值对。以下是目前为止的内容:
初始化。
$locations = array();
循环执行SQL查询并添加键/值对:
array_push($locations, "'$location_id' => '$location_name'");
之后,我选择数组的随机索引:
$rand = array_rand($locations);
Rand只是一个数字。所以locations[$rand]给出了如下内容:
'1' => 'Location 1'
很好,一个关联数组元素。在这一点上,我不知道这个关联数组的键,所以我尝试了以下事情:
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衬里,可以从数组中取出一个随机的键/值对。或者我的语法错了。我真的很感激你的帮助。
$array = array('a' => 1, 'b' => 2);
$key = array_rand($array);
$value = $array[$key];
array_rand()从数组返回一个键,而不是一个值。你可以使用:
$location_name = $locations[$rand];
获取位置名称。
下面是一个完整的例子:http://codepad.org/zR2YdMGN
只需点击几次提交,您将看到随机工作
你的推错了
$locations[$location_id] = $location_name;
应该是
所以,在你的问题中没有选择随机元素的问题。
总是调试你的代码,在使用它之前看看你是否有合适的数据
你可以用一行来完成:
$randomValue = array_rand(array_flip(['value_1', 'value_2']))
您将立即获得值而不是键