在PHP中将数组格式化为按指定的unix时间戳排序

在PHP中将数组格式化为按指定的unix时间戳排序,php,arrays,Php,Arrays,我有一个数组,它的时间戳始终在[3]上(下面是数组数据的一个示例) 我希望使用时间戳对数组进行排序。我看到一些stackoverflow帖子显然使用了两种方法来实现这一点,array\u multisort()和usort(),但我无法复制这两种方法。 以下是我根据自己的代码所做的尝试: 尝试1-我将数组传递给usort,然后尝试用foreach将其拆分。应用此方法肯定会更改结果的顺序,但日期似乎没有特定的顺序(升序、降序) 我的理论是它没有正确处理unix时间戳,我不确定我能做些什么。去掉时间

我有一个数组,它的时间戳始终在[3]上(下面是数组数据的一个示例)

我希望使用时间戳对数组进行排序。我看到一些stackoverflow帖子显然使用了两种方法来实现这一点,
array\u multisort()
usort()
,但我无法复制这两种方法。
以下是我根据自己的代码所做的尝试:

尝试1-我将数组传递给usort,然后尝试用foreach将其拆分。应用此方法肯定会更改结果的顺序,但日期似乎没有特定的顺序(升序、降序)

我的理论是它没有正确处理unix时间戳,我不确定我能做些什么。去掉时间戳的所有字符使其成为一行简单的数字(2014-01-02 03:02:12变为20140102030212)是否明智?或者有没有其他方法可以用当前形式的时间戳来处理它

以下是阵列中数据的示例:

Array
(
    [0] => Array
        (
            [uid] => 20013
            [0] => 20013
            [username] => myhipswontlie
            [1] => myhipswontlie
            [rating] => 4.00
            [2] => 4.00
            [datetime] => 2014-01-27 23:40:56
            [3] => 2014-01-27 23:40:56
            [type] => rated
            [4] => rated
        )

    [1] => Array
        (
            [uid] => 20025
            [0] => 20025
            [username] => brasilchika
            [1] => brasilchika
            [rating] => 4.00
            [2] => 4.00
            [datetime] => 2014-01-02 03:02:12
            [3] => 2014-01-02 03:02:12
            [type] => rated
            [4] => rated
        )

    [2] => Array
        (
            [uid] => 10002
            [0] => 10002
            [username] => crtten
            [1] => crtten
            [datetime] => 2014-01-25 01:33:34
            [2] => 2014-01-25 01:33:34
            [type] => visits
            [3] => visits
        )

)

您的问题是您的数字键在数组中似乎不匹配。有时在第三个键中可以找到datetime,有时在第二个键中可以找到datetime(这很奇怪,因为它们看起来像来自
mysql\u fetch\u array()
,这将形成统一的数组)

要解决此问题,应改用关联数组键:

function sortArray($a1, $a2){
    if ($a1['datetime'] == $a2['datetime']) return 0;
    return ($a1['datetime'] > $a2['datetime']) ? -1 : 1;
}
usort($the_array, "sortArray");

啊,我甚至没注意到这让我兴奋。我现在意识到正在发生的事情,一些结果的评级正在改变。非常感谢你。
Array
(
    [0] => Array
        (
            [uid] => 20013
            [0] => 20013
            [username] => myhipswontlie
            [1] => myhipswontlie
            [rating] => 4.00
            [2] => 4.00
            [datetime] => 2014-01-27 23:40:56
            [3] => 2014-01-27 23:40:56
            [type] => rated
            [4] => rated
        )

    [1] => Array
        (
            [uid] => 20025
            [0] => 20025
            [username] => brasilchika
            [1] => brasilchika
            [rating] => 4.00
            [2] => 4.00
            [datetime] => 2014-01-02 03:02:12
            [3] => 2014-01-02 03:02:12
            [type] => rated
            [4] => rated
        )

    [2] => Array
        (
            [uid] => 10002
            [0] => 10002
            [username] => crtten
            [1] => crtten
            [datetime] => 2014-01-25 01:33:34
            [2] => 2014-01-25 01:33:34
            [type] => visits
            [3] => visits
        )

)
function sortArray($a1, $a2){
    if ($a1['datetime'] == $a2['datetime']) return 0;
    return ($a1['datetime'] > $a2['datetime']) ? -1 : 1;
}
usort($the_array, "sortArray");