根据值排序关联阵列而不删除键[重复](Sort associative array accordin

2019-10-20 06:54发布

这个问题已经在这里有一个答案:

  • 在PHP排序阵列由值并保持索引关系 2答案

我有我要作为排序依据其价值的基础上的数组。 但是,当我使用rsort ,它会删除所有的按键。 我试图翻转阵列,然后用于krsort ,但随后除去其具有相同的键一些键/值对。

Array
(
    [533ae5a78ead0e8e118b4567] => 1
    [534d5a4b8ead0e5b73294d72] => 45
    [533ee8bc8ead0ec5138b4567] => 32
    [535f42748ead0ef72ec72731] => 1
    [537cc7128ead0e683071f3c0] => 2
    [5388795b8ead0ea32f208680] => 3
    [538c4f1a8ead0e75472f05b0] => 6
    [538963758ead0e6759208680] => 5
    [538961a58ead0e0459208680] => 3
    [5389616e8ead0ecc58208680] => 3
    [538962c68ead0eb6582098d8] => 2
    [538964c78ead0ec159208680] => 1
    [53887efc8ead0e2b35208680] => 1
    [538964678ead0ea659208680] => 3
)

如何实现这一目标?

Answer 1:

您可以使用arsort() 从手册:

arsort - 排序以相反的顺序阵列并保持索引关联

例:

$a = array(
    '533ae5a78ead0e8e118b4567' => 1,
    '534d5a4b8ead0e5b73294d72' => 45, 
    '533ee8bc8ead0ec5138b4567' => 32
);

arsort($a);
var_dump($a);

输出:

array(3) {
  '534d5a4b8ead0e5b73294d72' =>
  int(45)
  '533ee8bc8ead0ec5138b4567' =>
  int(32)
  '533ae5a78ead0e8e118b4567' =>
  int(1)
}


文章来源: Sort associative array according to value without deleting keys [duplicate]