如何在PHP中对数组的一个成员进行排序?


How can I sort an array after a member of its items in PHP?

我在数组中排序日期有问题。

$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值对这些数组进行排序。

您可以使用我为另一个问题提供的解决方案(参见make_comparer函数的代码):

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

这将允许您根据任意数量的标准对数据进行排序,并且您可以通过简单地更改数组项的顺序或值来轻松更改标准。

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

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

,然后:

usort($data, "cmp");

我认为你可以这样做:

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');

希望能成功

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

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"];'
));

使用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);
?>