【问题标题】:[ solver } Sort gallery By date[求解器}按日期排序画廊
【发布时间】:2013-05-14 11:02:09
【问题描述】:

我有一个问题,我创建了一个画廊,它工作得很好,但是对图像进行排序的功能取决于他们 DAY 只是它忽略了嘴和分钟...... 用于排序的形式是 ::::: | d/m/Y H:i:s |,但是当我移动到另一个嘴巴时,我失去了订单,因为它只取决于那一天,因为我说过我希望它也考虑到嘴巴。

$date = date ("d/m/Y H:i:s",filemtime($dir_mini)); 函数 sortFunctionASC ( $a , $b ) { return strcmp($a["date"], $b["date"]); }

在这里,我给出了对画廊进行排序的部分

//Boucle sur le répertoire On extrait aussi le Nom de l'image et de la miniature 
    $images = array();
    while ( false !== ($Fichier = readdir($ouverture))) 
    {       
            $berk = array('.', '..');

            $dir_mini = $dos_mini.$Fichier;
            $dir_img  = $dos_img.$Fichier;
            $img_name = $dir_mini ; 
            $img_name = preg_replace('#jpg|png|jpg|mini|/|\.#i', '',$img_name);
            $date_precise = date ("d/F/Y-H:i",filemtime($dir_mini));
            $date = date ("d/m/Y H:i:s",filemtime($dir_mini));  
            if(!in_array($Fichier, $berk) AND !is_dir($dir_mini) AND !is_dir($dir_img) )

            {
                $image = array();
                $image['date_precise']  = $date_precise;
                $image['date']  = $date;
                $image['img']   = $dir_img;
                $image['thumb'] = $dir_mini;
                $images[] = $image;

            }   
    }   
    closedir($ouverture);   

// Cette deux fonctions trient les images en fonction de date  ASC croissant, DESC décroissant 
function sortFunctionASC ( $a , $b ) { return strcmp($a["date"], $b["date"]); }
function sortFunctionDESC( $b , $a ) { return strcmp($a["date"], $b["date"]); }

if (isset ($_GET['ASC']))  { usort ($images,"sortFunctionASC"); }
if (isset ($_GET['DESC'])) { usort ($images,"sortFunctionDESC"); }
if (!isset($_GET['ASC']) AND !isset($_GET['DESC'])) { usort ($images,"sortFunctionDESC") ;}

【问题讨论】:

  • 使用时间戳进行排序,因为它始终是一致的,因为 DMY 上的字符串排序总是会提供不一致的结果,因为它认为日期比月份更重要,而月份比年份更重要。跨度>
  • 好吧,我解决了我的问题,我只是将日期更改为 y-m-d,谢谢 =D
  • 这可行,但仅按时间戳排序仍然会更简单快捷,而不是将时间戳从 filemtime 转换为日期,然后对日期进行文本排序

标签: php arrays date sorting gallery


【解决方案1】:

我认为您应该将日期转换为时间戳进行排序。如此简单的使用 filemtime ( string $filename ) 没有日期 ("d/m/Y H:i:s"... stuff

function sortFunctionASC ( $a , $b ) { return $a["stamp"] < $b["stamp"]); }
function sortFunctionDESC( $b , $a ) { return $a["stamp"] < $b["stamp"]); }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-19
    • 1970-01-01
    • 2015-09-06
    • 2017-07-05
    • 2016-07-26
    • 2016-10-22
    相关资源
    最近更新 更多