在不重新编制索引的情况下对数组的数值进行排序(PHP)

Ger*_*ino 2 php sorting

我正在做的是这样的:

  • 我从数据库中获取ID值列表(数字)并将其存储到数组中(1,2,2,...)
  • 然后我用重复计算重复数array_count_values.这个输出([1] => 1,[2] => 2,...)
  • 然后我想通过计数以降序重新排序数组
  • 然后我只是array_keys($array)用来获取计数排序列表中的ID.

我曾用过array_multisort类似的功能,但在这种情况下,键是字符串('a'=> 2).现在的问题是我使用数字键和多重键将键重新索引为1,2,3,因为持有计数值的键是数字ID.这当然会破坏目的,因为我无法识别任何东西..

无论如何,这就是我现在正在做的事情:

$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);
Run Code Online (Sandbox Code Playgroud)

有什么东西告诉我,有更好的方法来解决这个问题吗?

Gum*_*mbo 7

尝试asort而不是array_multisort维护原始索引关联.

  • @ transient-jet-lag:您可以使用`arsort`(`r` = reverse)或在`asort`之后使用`array_reverse`. (2认同)