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

时间:2014-08-11 23:13:44

标签: php sorting

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

示例数组:

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

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

1 个答案:

答案 0 :(得分:2)

我的理解是你要按值排序,然后按键排序。要执行此操作,您可以使用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
)