将两个日期与从HTML5数据中提取的javascript进行比较
我有一个数组,需要在显示之前进行排序。 这里有一个我如何包装阵列的代码将两个日期与从HTML5数据中提取的javascript进行比较,javascript,arrays,html,sorting,Javascript,Arrays,Html,Sorting,我有一个数组,需要在显示之前进行排序。 这里有一个我如何包装阵列的代码 for ( $i = 0, $count = count( $notifications ); $i < $count; ++$i ) { $alt = ( 0 == $counter % 2 ) ? ' class="alt"' : ''; ?> <script> array[i] = '<li><?php echo adds
for ( $i = 0, $count = count( $notifications ); $i < $count; ++$i ) {
$alt = ( 0 == $counter % 2 ) ? ' class="alt"' : ''; ?>
<script>
array[i] = '<li><?php echo addslashes($notifications[$i]);?></li>';
i++;
</script>
<?php $counter++;
}
?>
for($i=0,$count=count($notifications);$i<$count;++$i){
$alt=(0==$counter%2)?'class=“alt”:'';?>
数组[i]='';
i++;
以下是每个周期的情况:
现在我需要按数据日期属性对这个数组进行排序
我已经走了这么远,但没有成功
var joint = array.join("<br/>");
aka = jQuery(joint).find('a').sort(function (a, b) {
return '<li>' +a.getAttribute('data-date') - +b.getAttribute('data-date') + '</li>';
})
var joint=array.join(
);
aka=jQuery(joint).find('a').sort(函数(a,b){
返回“”+a.getAttribute('data-date')-+b.getAttribute('data-date')+” ”;
})
有两种解决方案,一种是使用javascript,另一种是使用PHP
纯Javascript解决方案:
下面是如何根据数据日期属性对
进行排序
我包括了基于日期和基于字符串的排序
JSFiddle:
功能比较表(a、b)
{
var match=a.match(/^(\d+)-(\d+)-(\d+)-(\d+):(\d+):(\d+)$/);
var date1=新日期(匹配[1],匹配[2]-1,匹配[3],匹配[4],匹配[5],匹配[6]);
match=b.match(/^(\d+)-(\d+)-(\d+)(\d+)\:(\d+):(\d+)$/);
var date2=新日期(匹配[1],匹配[2]-1,匹配[3],匹配[4],匹配[5],匹配[6])
返回日期1-日期2;
}
变量列表=$(“#ulList”);
var listItems=list.find('li').sort(函数(a,b){
返回比较数据($(a).find('a').eq(0).attr(“数据日期”),$(b).find('a').eq(0).attr(“数据日期”);
//返回$(a).find('a').eq(0).attr(“数据日期”).localeCompare($(b).find('a').eq(0).attr(“数据日期”);
});
list.find('li').remove();
列表。追加(列表项);
虽然在以下情况下,基于字符串的比较将失败,但字符串和日期比较都可以使用特定格式:
<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;
}
?>
参考文献:
为什么不使用实际的JavaScript数组而不是DOM元素来表示数据?创建大量的
标记是一个非常糟糕的主意。为什么不使用PHP创建一个格式良好的JSON字符串并将其传递给JavaScript?这些数据来自不同的函数。在wordpress中,$通知被称为$notifications=bp\u core\u为用户获取通知(bp\u loggedin\u user\u id())我可以在这个脚本中用JS表示它吗?我在考虑做一些类似的事情,但仍然坚持使用多维数组。排序在哪里变得更重要painfull@Blender是的,最后我会很好地重写它),所以我不会重复使用标记。thanks@Mpa4Hu我已经发布了一个关于如何根据数据日期重新排序列表的解决方案。谢谢,我使用了基于字符串的javascript解决方案。最后一个问题,如何使它反向工作?)现在,它从最早的日期开始,到当前,我希望它从当前开始,只需将返回更改为return date2-date1;
<?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;
}
?>