array_count_values рандомизировать совпадающие значения

0

Я знаю код ниже

<?php
    $array = array("1", "hello", "1", "world", "hello");    
    print_r(array_count_values($array));
?>

Вывод:

Array
(
    [1] => 2
    [hello] => 2
    [world] => 1
)

Я хотел бы получить значение, которое было повторено больше всего, или если повторяются несколько совпадающих экземпляров, которые чаще повторяются, например, "привет" и "1" рандомизируют их вместо того, чтобы извлекать первый.

Теги:

1 ответ

1
Лучший ответ

Live: http://ideone.com/D1Ydbd

$array = array(1, "hello", 1, "world", "hello",'2','2','2','3','3','3');

$s = array_count_values($array);
$mostRepeated = max($s);

$s = array_filter( $s, function($v) use ($mostRepeated) {
  return $v==$mostRepeated;
});

print_r($s);    
echo array_rand($s);  // randomized

Шаг:

  • найти наивысший счет
  • удалять элементы с меньшей частотой
  • вернуть элемент random с array_rand

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

  • 0
    Работает отлично! большое спасибо

Ещё вопросы

Сообщество Overcoder
Наверх
Меню