【问题标题】:How to order this tricky PHP associative array?如何订购这个棘手的 PHP 关联数组?
【发布时间】:2012-08-04 02:16:39
【问题描述】:

如何订购这个棘手的 PHP 关联数组?

我有这个关联数组:

Array (
    [4] => 3
    [2] => 4
    [3] => 1
    [6] => 1
    [1] => 1
)

我需要按价值最高的键对其进行排序,但我还需要将具有相同值的键保持在其原始顺序中,因此它需要出来:

Array (
    [2] => 4
    [4] => 3
    [3] => 1
    [6] => 1
    [1] => 1
    )

我不能使用 arsort() 因为它会根据键的数字顺序重新排列具有相同值的键,我真的很茫然!有什么建议吗?

【问题讨论】:

    标签: php arrays associative-array sorting


    【解决方案1】:

    natsort救援:

    $blub = array(4 => 3, 2 => 4, 3 => 1, 6 => 1, 1 => 1);
    natsort($blub);
    $blub = array_reverse($blub, true);
    
    var_dump($blub);
    

    这将始终输出:

    array(5) { [2]=> int(4) [4]=> int(3) [3]=> int(1) [6]=> int(1) [1]=> int(1) }
    

    natsort 似乎使用了不同的排序算法,幸运的是,当值与 asort 相反时,它保留了顺序。但是请注意,因此 natsort 可能会比其他传统排序功能稍慢。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-05-07
      • 1970-01-01
      • 2011-06-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多