我将 CSV 数据加载到一个多维数组中。这样,每一行都是一条记录,每一列都包含相同类型的数据。 我使用下面的函数加载 CSV 文件。
function f_parse_csv($file, $longest, $delimiter)
{
$mdarray = array();
$file = fopen($file, "r");
while ($line = fgetcsv($file, $longest, $delimiter))
{
array_push($mdarray, $line);
}
fclose($file);
return $mdarray;
}
我需要指定一列进行排序,以便重新排列行。 其中一列包含日期信息,格式为 "Y-m-d H:i:s",我希望能将最近的日期排在第一行。
使用 usort。这里有一个通用解决方案,可以用于不同的列:
class TableSorter {
protected $column;
function __construct($column) {
$this->column = $column;
}
function sort($table) {
usort($table, array($this, 'compare'));
return $table;
}
function compare($a, $b) {
if ($a[$this->column] == $b[$this->column]) {
return 0;
}
return ($a[$this->column] < $b[$this->column]) ? -1 : 1;
}
}
按第一列排序:
$sorter = new TableSorter(0); // sort by first column
$mdarray = $sorter->sort($mdarray);