有两种解决方案,一种是使用 javascript,一种是使用 PHP。
纯 Javascript 解决方案:
以下是如何<li>
根据 data-date 属性对您进行排序。
我已经包含了基于日期和基于字符串的排序。
JSFiddle:http: //jsfiddle.net/xZaeu/
<html>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js"></script>
<body>
<ul id="ulList">
<li><a data-date="2013-09-16 11:44:50" href="http://example.com/url/">09!</a></li>
<li><a data-date="2013-08-16 11:44:50" href="http://example.com/url/">08!</a></li>
<li><a data-date="2013-07-16 11:44:50" href="http://example.com/url/">07!</a></li>
<li><a data-date="2013-11-16 11:44:50" href="http://example.com/url/">11!</a></li>
<li><a data-date="2013-10-16 11:44:50" href="http://example.com/url/">10!</a></li>
<li><a data-date="2013-06-16 11:44:50" href="http://example.com/url/">06!</a></li>
</ul>
<script>
function compareDataDates(a,b)
{
var match = a.match(/^(\d+)-(\d+)-(\d+) (\d+)\:(\d+)\:(\d+)$/);
var date1 = new Date(match[1], match[2] - 1, match[3], match[4], match[5], match[6]);
match = b.match(/^(\d+)-(\d+)-(\d+) (\d+)\:(\d+)\:(\d+)$/);
var date2 = new Date(match[1], match[2] - 1, match[3], match[4], match[5], match[6])
return date1 - date2;
}
var list = $('#ulList');
var listItems = list.find('li').sort(function (a, b) {
return compareDataDates($(a).find('a').eq(0).attr("data-date"), $(b).find('a').eq(0).attr("data-date"));
//return $(a).find('a').eq(0).attr("data-date").localeCompare($(b).find('a').eq(0).attr("data-date"));
});
list.find('li').remove();
list.append(listItems);
</script>
</body>
</html>
自从您使用特定格式以来,字符串和日期比较都有效,尽管在以下情况下基于字符串的比较会失败:
<li><a data-date="2013-06-16 11:44:50" href="http://example.com/url/">06!</a></li>
<li><a data-date="2013-6-16 11:44:50" href="http://example.com/url/">6!</a></li>
参考资料用于烹饪:
纯PHP解决方案:
类似于...的东西
<?php
//Other PHP code here...
$arrayForSorting = new array();
foreach ($notifications as &$value)
{
$temp = addslashes($value);
array_push($arrayForSorting,"<li>".$temp."</li>");
}
//Sort the array
asort($arrayForSorting);
foreach ($arrayForSorting as &$value)
{
echo $value;
}
?>
参考: