3

目前我有一些看起来像这样的多维数组

Array ( 
    [71] => Array ( [author] => 2 [date] => 1392867376 ) 
    [49] => Array ( [author] => 2 [date] => 1392868188 ) 
    [75] => Array ( [author] => 14 [date] => 1392867388) 
    [67] => Array ( [author] => 2 [date] => 1392870805 ) 
)

我想按“日期”对它们进行排序,但我不知道如何。我试过这个:

function cmp($a, $b) {
    if ($a == $b) {
        return 0;
    }
    return ($a < $b) ? -1 : 1;
}
uasort($visited, 'cmp');

但是由于我不知道,也找不到有关如何使用“比较功能”的参考资料,所以我在太空中。我所能找到的只是非常模糊的东西。目前这是按“作者”排序的。

有人可以向我解释这些比较功能是如何工作的(或将我指向在线资源),并告诉我我需要做什么才能按“日期”对这个数组进行排序 - 同时保持所有键完好无损(不得更改或删除键)

非常感谢您提供的任何帮助。

PS:我试过 array_multisort - 它抹去了我的钥匙。

4

2 回答 2

7

试试这个 cmp 函数:

function cmp($a, $b) {
    if ($a['date'] == $b['date']) {
        return 0;
    }
    return ($a['date'] < $b['date']) ? -1 : 1;
}

它应该工作。

于 2014-02-20T05:20:01.153 回答
0

数组日期按升序排序

<?php
$a = array();
$a[71] = Array ('author' => 2, 'date' => 1392867376 );
$a[49] = Array ( 'author' => 14, 'date' => 1392868188 ) ;
$a[75] = Array ( 'author' => 2, 'date' => 1392867388) ;
$a[67] = Array ( 'author' => 2, 'date' => 1392870805 ) ;

$date = array();

// Obtain a list of columns
foreach ($a as $key => $row) {
    $date[$key]  = $row['date'];    
}

//sort the array date ascending order
array_multisort($date, SORT_ASC, $a);

//array is sorted in ascending order
print_r($a);
于 2014-02-20T05:22:22.633 回答