在PHP中,如何在数组项的成员之后对数组进行排序?
我对数组中的日期排序有问题在PHP中,如何在数组项的成员之后对数组进行排序?,php,sorting,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]["VenueConfig
$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"];
我想根据时间戳值对这些数组进行排序。您可能正在查找。使用此函数,可以指定用于比较两个元素的比较函数。这样,你就可以写作了
function cmp($a, $b)
{
if ($a['timestamp'] == $b['timestamp']) {
return 0;
}
return ($a['timestamp'] < $b['timestamp']) ? -1 : 1;
}
我认为你可以做到这一点:
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');
函数cmp($a,$b){
$a_t=strotime($a['TimeStamp']);
$b_t=strotime($b['TimeStamp']);
如果($a_t==$b_t){
返回0;
}
回报率($a_t<$b_t)?-1:1;
}
usort($data,'cmp');
希望它能工作您可以使用(请参阅生成比较器
功能的代码):
这将允许您按任意数量的条件对数据进行排序,您只需更改数组项的顺序或值即可轻松更改条件。这里有很多正确的答案,但我通常更喜欢将
usort
用于匿名函数:
PHP≥ 5.3
PHP≥ 4.0.1
使用功能:-
<?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);
?>
希望这有帮助。时间戳是整数形式。All-caps在互联网上相当于叫喊。请不要这样做。我已经试过了。
''函数cmp($a,$b){global$array;if($array[$a]['TimeStamp']<$array[$b]['TimeStamp']){return false;}否则{return true;}'@Charlie:为什么要使用
全局$array
$a
和$b
是直接来自阵列的元素。此外:为什么返回true
或false
?file:///C:/Documents%20and%20Settings/fani/Desktop/C2%20Help/Sample.html
usort($data, make_comparer('TimeStamp'));
usort($data, function($a, $b) {
return $a['timestamp'] - $b['timestamp'];
});
usort($data, create_function('$a, $b',
'return $a["timestamp"] - $b["timestamp"];'
));
<?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);
?>