Вытаскиваем случайную пару ключ-значение из массива

В этой статье я расскажу и приведу пример функции, с помощью которой можно будет вытащить случайную пару, либо что-то одно (ключ или значение) из ассоциативного массива.
Так уж получается, что всех функций разработчики php не придумали. Даже первая функция, которая приходит в голову, для решение нашей проблемы - array_rand() - и та вытаскивает лишь значение ключа.
Ну что ж, придется идти длинным путем. Если такой функции нет, то давайте ее напишем.
<? function array_rand_assoc($arr = array(), $return_value = ""){ $rand = rand(0,(count($arr)-1)); $counter = 0; foreach ($arr as $key => $value) { if($counter == $rand){ switch ($return_value) { case 'key': $newArr = $key; break; case 'value': $newArr = $value; break; default: $newArr[0] = $key; $newArr[1] = $value; break; } break; }else{ $counter++; } } return $newArr; } ?>
Приведенная выше функция принимает в качестве первого аргумента исходный массив, а в качестве второго - значение, которое мы хотим получить.
Если с первым аргументом все понятно, то на счет второго я сделаю небольшую ремарку. Этот параметр не обязателен. Если вы его не укажете, то функция вам вернет массив, в котором будет отдельно лежать ключ и отдельно значение.
Также можно указать вторым параметром key - тогда функция вернет только ключ; либо value - тогда функция вернет только значение.
Вот несколько присеров ее использования:
$sourceArr = Array("a"=>"aaa","b"=>"bbb","c"=>"ccc","d"=>"ddd"); $first = array_rand_assoc($sourceArr); // вернет случайную пару ключ-значение $second = array_rand_assoc($sourceArr, 'key'); // вернет ключ из случайной пары массива $third = array_rand_assoc($sourceArr, 'value'); // вернет значение из случайной пары массива