Выбор случайного элемента из ассоциативного массива PHP

У меня есть ассоциативный массив в PHP и вы хотите выбрать из него случайную пару ключ / значение. Вот что я до сих пор:

Инициализировать.

$locations = array(); 

Цикл через SQL-запрос и добавляет пары ключ / вал:

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

Позже я выбираю случайный индекс массива:

 $rand = array_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)]; 

Ни одна из этих трех попыток не работает. Они все бросают ошибки, такие как «Пропущенная переменная – это не массив».

Я уверен, что есть простой простой лайнер, который может вырвать случайную пару ключ / значение из массива. Или мой синтаксис выключен. Я очень благодарен за помощь.

Solutions Collecting From Web of "Выбор случайного элемента из ассоциативного массива PHP"

 $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; 

должен быть

поэтому нет ничего о выборе случайного элемента в вашем вопросе.
всегда отлаживайте свой код, чтобы убедиться, что у вас есть правильные данные перед его использованием