将两个日期与从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;
       }
    
       ?>