1

我在php中有一个多维数组,我想根据输入的时间对其进行排序,但我不能,所以请给出一些想法。

Array
(
    [0] => Array
        (
            [account_id] => 9
            [entered] => 1369374812
        )

    [1] => Array
        (
            [account_id] => 9
            [entered] => 1377587453
        )

    [2] => Array
        (
            [account_id] => 9
            [entered] => 1373542381
        )

    [3] => Array
        (
            [account_id] => 9
            [entered] => 1372988725
        )

    [4] => Array
        (
            [account_id] => 353
            [entered] => 1380191316
        )

    [5] => Array
        (
            [account_id] => 9
            [entered] => 1377587610
        )
)
4

3 回答 3

1

你可以用array_multisort做到这一点

//in PHP 5.5:
$rgOrder = array_column($rgData, 'entered');
array_multisort($rgOrder, SORT_ASC, $rgData);

如果您的 PHP 版本早于 5.5,则:

$rgOrder = array_map(function($rgItem)
{
   return $rgItem['entered'];
}, $rgData);
array_multisort($rgOrder, SORT_ASC, $rgData);

- 你可以在这里找到一个小提琴。如果您不想使用array_multisort(因为它需要先创建临时数组),您可以这样做:

usort($rgData, function($rgX, $rgY)
{
   return $rgX['entered']>$rgY['entered']?-1:$rgX['entered']!=$rgY['entered'];
});

- 这是小提琴。所有示例至少需要 PHP 5.3。否则,您需要使用create_function回调定义。

于 2013-09-27T12:08:30.727 回答
0

尝试这个,

function aasort (&$array, $key) {
    $sorter=array();
    $ret=array();
    reset($array);
    foreach ($array as $ii => $va) {
        $sorter[$ii]=$va[$key];
    }
    asort($sorter);
    foreach ($sorter as $ii => $va) {
        $ret[$ii]=$array[$ii];
    }
    $array=$ret;
}

aasort($your_array,"account_id");
于 2013-09-27T12:03:06.980 回答
0

您可以使用usort实现排序

<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
ini_set('log_errors', 0);

function compare($a, $b) {
        if ( $a['entered'] == $b['entered'] ) {
                return 0;
        }

        return ( $a['entered'] < $b['entered'] ) ? -1 : 1;
}

$a = array(
        array('account_id' => 9, 'entered' => 1369374812),
        array('account_id' => 9, 'entered' => 1377587453),
        array('account_id' => 9, 'entered' => 1373542381)
);

usort($a, "compare");

print_r($a);
?>
于 2013-09-27T12:20:09.337 回答