I've got an associative array in PHP and want to select a random key/value pair out of it. Here's what I have so far:
Initialize.
$locations = array();
Loops through a SQL query and adds key/val pairs:
array_push($locations, "'$location_id' => '$location_name'");
Later on, I select a random index of the array:
$rand = array_rand($locations);
Rand is just a number. So locations[$rand] gives me something like:
'1' => 'Location 1'
OK great, an assoc array element. At this point, I do not know the key of this assoc array, so I've tried the following things:
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)];
None of these 3 attempts work. They all throw errors like "Passed variable is not an array".
I'm sure there's some simple 1 liner that can pluck a random key/value pair from the array. Or my syntax is off. I'd really appreciate the help.
$array = array('a' => 1, 'b' => 2);
$key = array_rand($array);
$value = $array[$key];
array_rand() returns a key from the array, not a value. You can just use:
$location_name = $locations[$rand];
To get the location name.
Here's a full example: http://codepad.org/zR2YdMGN
Just click submit a few times, you'll see the random working.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With