【问题标题】:Sort array by values while preserving key order按值对数组进行排序,同时保留键顺序
【发布时间】:2020-08-07 08:22:21
【问题描述】:

我有一个如下所示的数组:

$array = array(
'5' => 2,
'6' => 3,
'7' => 10,
'8' => 1
);    

我希望它看起来像这样:

$array = array(
'5' => 1,
'6' => 2,
'7' => 3,
'8' => 10
);

键应保持不变,但值应按升序排列。使用 sort() 键将被删除并替换为从 0 开始的键。 asort() 将按照我的意愿对值进行排序,但它将保持索引关联。 我尝试了 sort、usort、asort,但这些似乎都不是我需要的 orderfunction。 我必须手动排序还是有可以使用的功能?

提前感谢您的任何提示。

【问题讨论】:

    标签: php arrays sorting


    【解决方案1】:

    您可以使用array_keys 提取数组的键,使用sort 对值进行排序,然后使用array_combine 将键与排序后的值组合起来:

    $array = array(
    '5' => 2,
    '6' => 3,
    '7' => 10,
    '8' => 1
    );  
    $keys = array_keys($array);
    sort($array);
    $array = array_combine($keys, $array);
    print_r($array);
    

    输出:

    Array
    (
        [5] => 1
        [6] => 2
        [7] => 3
        [8] => 10
    )
    

    Demo on 3v4l.org

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-25
      • 2020-03-08
      • 2015-06-06
      • 1970-01-01
      • 2013-03-23
      • 1970-01-01
      • 2014-03-21
      • 2018-07-26
      相关资源
      最近更新 更多