Я пытаюсь получить элемент победителя из пула элементов внутри массива. Элемент с меньшим количеством вхождений является победителем:PHP - Сортировка по значению Возрастание по значению Случайный
$answer_list = [7,7,7,5,4,1,2,2,3,1,3,7,7,4,1,4,5,5,4,5];
$answer_list_counts = array_count_values($answer_list);
asort($answer_list_counts);
array(6) {
[2]=> 2
[3]=> 2
[1]=> 3
[4]=> 4
[5]=> 4
[7]=> 5
}
После сортировки, победившая элемент будет $ answer_list_counts [0] большую часть времени.
Но если есть несколько элементов, разделяющих одинаковое количество темпов, тот с наименьшим ключом всегда будет выигрывать. В идеале это должно быть рандомизировано.
В этом случае победитель должен быть ответом с ключом 2
или 3
, но в настоящий момент ключ 2
всегда выигрывает. Второй «случайный» вид, который учитывает начальную сортировку, исправит это, но я не могу заставить его работать.
Я попытался с помощью перетасовать после asort:
$winner = shuffle($answer_list_counts)[0];
Но это решение не уважает первого рода, он просто перемешивает весь массив случайным образом.
Вы можете разместить код, который не Работа? – martin
Добавлен весь код – Mazka