【问题标题】:How to sort array by value, with access to key in callback function?如何按值对数组进行排序,并访问回调函数中的键?
【发布时间】:2014-08-11 23:13:44
【问题描述】:

我有一个数组,我想根据它的值进行排序。但是,因为值可以是等价的,所以我还需要能够访问排序函数回调中的键,以便找出正确的顺序。我目前正在使用uasort按值排序,同时保持键关联,但无法弄清楚如何从回调比较函数中访问键。

示例数组:

Array(
    [a1] => date1,
    [a2] => date2,
    [a3] => date1
)

我需要按日期排序,但由于a1和a3是同一日期,我需要检查它是a1还是a3。

【问题讨论】:

    标签: php sorting


    【解决方案1】:

    我的理解是你想按值排序,然后按键。为此,您可以使用 array_multisort() 并首先传递您的值,然后传递您的密钥:

    $k = array_keys($array);
    $v = array_values($array);
    
    array_multisort($array, SORT_ASC, $v, SORT_ASC, $k);
    

    示例输出(print_r($array) 之后):

    Array
    (
        [a1] => date1
        [a3] => date1
        [a2] => date2
    )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-02-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多