如何在PHP中的项目成员之后对数组进行排序?

时间:2011-04-11 12:07:32

标签: php sorting

我在排序数组时遇到问题。

$data[0]["Venue"];
$data[0]["VenueConfigurationID"];
$data[0]["VenueID"];
$data[0]["TimeStamp"];

$data[2]["Venue"];
$data[2]["VenueConfigurationID"];
$data[2]["VenueID"];
$data[2]["TimeStamp"];

$data[3]["Venue"];
$data[3]["VenueConfigurationID"];
$data[3]["VenueID"];
$data[3]["TimeStamp"];

我想根据TimeStamp值对这些数组进行排序。

5 个答案:

答案 0 :(得分:2)

您可以使用the solution I presented for another question(请参阅make_comparer功能的代码):

usort($data, make_comparer('TimeStamp'));

这将允许您按照任意数量的条件对数据进行排序,您只需更改数组项的顺序或值即可轻松更改条件。

答案 1 :(得分:0)

可能您正在寻找usort。使用此功能,您可以指定一个比较函数,用于比较两个元素。因此,你可以写

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

之后:

usort($data, "cmp");

答案 2 :(得分:0)

我认为你可以这样做:

function cmp($a, $b){
$a_t = strtotime( $a['TimeStamp'] ) ; 
$b_t = strtotime( $b['TimeStamp'] ) ; 

if ($a_t == $b_t) {
    return 0;
}
return ($a_t < $b_t) ? -1 : 1;
}

usort($data,'cmp');

希望它有效

答案 3 :(得分:0)

这里有很多正确的答案,但我通常更喜欢使用usort匿名函数:

PHP≥5.3

usort($data, function($a, $b) {
    return $a['timestamp'] - $b['timestamp'];
});

PHP≥4.0.1

usort($data, create_function('$a, $b',
    'return $a["timestamp"] - $b["timestamp"];'
));

答案 4 :(得分:0)

使用array_multisort功能: -

<?php
// Obtain a list of columns
foreach ($data as $key => $row) {
    $timestamp[$key]  = $row['TimeStamp'];        
}

// Sort the data with timestamp descending    
array_multisort($timestamp, SORT_DESC, $data);
?>

希望这有帮助。