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


PHP - Sort array by date - not first element

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

不确定……是否有一种方法可以简单地按元素[1]对数据进行排序,或者我是否需要将此数据放入第二个数组中,然后对该数组进行排序……还是? ?

然后……请包括打印部分…输出数据所需的变量。谢谢。

(*是的,我在'stack '上看到过一些这样的例子。但是,在使用'compare '时,我无法正确输出值。)

RAW DATA:
yes|2012-12-12|Jim无
yes|2013-06-04|乔·史密斯
no|2013-04-21|Jane Doe

SORTED DATA:
yes|2013-06-04|乔·史密斯
no|2013-04-21|Jane Doe
yes|2012-12-12|Jim无

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>';
}

这应该能帮你找到…

假设您从文件名获取$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相同的数据。

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