PHP - 按日期排序数组 - 不是第一个元素

时间:2013-06-07 04:02:09

标签: php sorting datetime flat-file

从平面文件中读取...我需要显示按DESCENDING日期​​排序的数组元素(=最先显示当前日期)。

不确定...有没有办法按元素[1]简单地对数据进行排序,还是需要将这些数据放入第二个数组然后对该数组进行排序......或者??

然后...... 请包含打印部分...输出数据所需的变量。感谢。

(*是的,我在'堆栈'上看过其他一些例子。但是,在使用'compare'时我无法正确输出值。)

RAW DATA:
是的| 2012-12-12 |吉姆没有 是| 2013-06-04 | Joe Smith
no | 2013-04-21 | Jane Doe

SORTED DATA:
是| 2013-06-04 | Joe Smith
no | 2013-04-21 | Jane Doe
是| 2012-12-12 |吉姆没有

while (!feof($file) ) {
    $lines = fgets($file);
    $ele = explode('|', $lines);

    $db_display = $ele[0];
    $db_date = $ele[1];
    $db_name = $ele[2];

    $db_name = substr_replace($db_name,"",-1); // trim last char

    echo '<td>'.$db_name.'</td><td>'.$db_date.'</td>';
}

2 个答案:

答案 0 :(得分:1)

这应该可以帮助你......

假设您从文件名$ infile

获取
$fp = fopen($infile, "w");
$data = array();
while ($rec = fgetcsv($fp, 2048, "|")){
         $data[] = $rec;
}


usort($data, function ($a, $b){
     // if you want to reverse the sort swap a for b
     return strtotime($b[1]) - strtotime($a[1]);
});



foreach($data as $v){
   echo implode("|", $v)."\n";
}

输出到标准输出...你可以轻松地fopen / fputcsv相同的数据。

答案 1 :(得分:0)

usort($array, function($x, $y) { 
    return strcmp($y[1], $x[1]);
});