Что я делаю, это:
- Я получаю список значений ID (числовых) из БД и сохраняю его в массив (1, 2, 2, ...)
- Затем я считаю количество дубликатов
array_count_values
. это выводит ([1] => 1, [2] => 2, ...)
- Затем я хочу изменить порядок массива в порядке убывания с помощью счетчика
- Затем я просто использую
array_keys($array)
, чтобы получить идентификаторы в упорядоченном списке.
Однажды я использовал array_multisort
для аналогичной функции, но в этом случае клавиши были строками ('a' => 2). Теперь проблема в том, что я использую числовые ключи, и мультисортировка переиндексирует ключи к 1, 2, 3, потому что ключи, содержащие значение счетчика, являются числовыми идентификаторами. Это, конечно, лишает смысла цель, потому что я больше ничего не могу определить ..
Во всяком случае, вот что я примерно делаю сейчас:
$array = array(3, 1, 2, 3, 2, 3);
// count the IDs [0]=>3, [1]=>1, [2]=>2
$count = array_count_values($array);
// sort and screw up the id's: [0]=>3 [1]=>1 [2]=>2
array_multisort($count);
Что-то говорит мне, что есть лучший способ приблизиться к этому?