如何按值排序数组,并在回调函数中访问键


How to sort array by value, with access to key in callback function?

我有一个数组,我想根据它的值排序。但是,因为值可以是相等的,所以我需要能够访问排序函数回调中的键,以便找出正确的顺序。我目前使用的是按值排序,同时保持键关联,但不知道如何从回调比较函数访问键。

阵列例子:

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

我需要按日期排序,但由于a1a3是相同的日期,我需要检查是a1还是a3

我的理解是您希望按值排序,然后按键排序。要做到这一点,你可以使用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
)