根据日期或任何内容对自定义字段进行排序

时间:2011-11-01 作者:andresmijares

我现在正在做一个项目,我正面临一个让我抓狂的问题。

基本上,我必须显示一些课程的信息,为此,我创建了一个名为“CourseInfo”的自定义字段,该数组包括日期、地点和登录链接。

因此,用户可以根据需要创建自定义字段,因为课程可以是无限的,但是我需要根据课程日期而不是根据上次创建的自定义字段来排序输出。

由于课程日期包括月份和年份,是否会根据日期更改订单?

如果有任何帮助,我将不胜感激!

谢谢

更新******------------------------------------------

基本上我用的是这个代码,也许会有帮助

 <?php $limit = 1; $courses = array_reverse($courses); foreach ($courses as $course) {
                            $course = nl2br($course);
                            list($date,$city,$link) = explode(\'<br />\',$course);

 echo "<ul>";
 echo "<li>$date</li>";
 echo "<li>$city</li>";
 echo "<li><a href=\'$link\'>Inschrijven</a></li>";
 echo "</ul>";

 }  ?>
页面是http://www.otoacademie.nl/dev/rijinstructeur-auto-b/

请注意,没有订单。

更新==============================================更新日期格式

enter image description here

1 个回复
最合适的回答,由SO网友:EarnestoDev 整理而成

多行不是数组DD/MM/YYYY (第一行)

  • 使用PHP函数usort() 要对字段排序,请使用strtotime() 将该日期转换为时间戳date_i18n() 要输出它,如果您需要一个实际的示例,请将日期格式更改为我上面向您显示的格式,更新屏幕截图,我会给您代码。第一行必须是DD/MM/YYYY。

    代码

    // Demo set (replace with you custom fields)
    $courses = array(
        \'27/10/2011<br />\'. // Date
            \'Amsterdam<br />\'. // City
                \'http://www.google.com/\', // Link
        \'19/10/2011<br />\'. // Date
            \'Amsterdam<br />\'. // City
                \'http://www.google.com/\', // Link
        \'17/01/2011<br />\'. // Date
            \'Amsterdam<br />\'. // City
                \'http://www.google.com/\', // Link
    );
    // Convert the courses to objects and translate the dates
    $sorted_courses = array(); // Holds objects for sorting
    foreach($courses as $course){
        $course = nl2br($course);
        // Replace <br /> with \\r\\n
        $course = preg_replace(\'~<br[\\s]*/[\\s]*>~i\', PHP_EOL, $course);
        // Split by \\r\\n and trim each entry
        list($date, $city, $link) = array_map(\'trim\', preg_split(\'~[\\r\\n]+~\', $course));
        // Validate the date format [ :) ]
        if(!preg_match(\'~^([0-9]{2})/([0-9]{2})/([0-9]{4})$~\', $date, $slices)) continue;
        // Extract date elenents
        list($match, $day, $month, $year) = $slices;
        // And now create the object
        $sorted_courses[] = (object)array(
            \'time\'  => $time = mktime(1, 1, 1, $month, $day, $year),
            \'date\'  => $date = date_i18n(\'d F Y\', $time),
            \'city\'  => $city,
            \'link\'  => $link,
        );
    }
    // Sort elements ascending (using callback)
    usort($sorted_courses, function($item1, $item2){
        // Compare the timestamps and sort ascending
        return $item1->time > $item2->time;
    });
    // Got through the sorted courses and display them
    foreach($sorted_courses as $sorted_course){
        echo "<ul>";
            echo "<li>{$sorted_course->date}</li>";
            echo "<li>{$sorted_course->city}</li>";
            echo "<li><a href=\'{$sorted_course->link}\'>Inschrijven</a></li>";
        echo "</ul>";
    }
    

  • 结束

    相关推荐