我在排序数组时遇到问题。
$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值对这些数组进行排序。
答案 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
匿名函数:
usort($data, function($a, $b) {
return $a['timestamp'] - $b['timestamp'];
});
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);
?>
希望这有帮助。