我在类似的文件中有文本形式的日期和名称
2-4-2020,bat
14-3-2020,ball
25-6-2019,purse
27-8-2019,rice
所以我试着按升序排序
<?php
$newdates=$mydates=array();
$lines = file('n:/mydata.txt');
foreach($lines as $data)
{
$mydates[]=explode(',',$data);
}
$countdates=count($mydates);
for ($i=0;$i<$countdates;$i++){
$chkdate=$mydates[$i][0];
$currentdate=DateTime::createFromFormat('d-m-Y', $chkdate)->format('d-m-Y');
$mydates[$i][0]=$currentdate;
}
array_multisort($mydates);
$newdates=$mydates;
$file = fopen("n:/newdates.txt","w");
foreach ($newdates as $contentline)
{
fputcsv($file,$contentline);
}
fclose($file);
但它根本没有分类
这可能会简单一点。您需要使用usort()
和strtotime()
函数。
以下是的简化示例
$mydates= array(
['2-4-2020','bat'],
['14-3-2020','ball'],
['25-6-2019','purse'],
['27-8-2019','rice']
);
usort($mydates, function($a,$b) {
return strtotime($a[0]) > strtotime($b[0]);
});
foreach ($mydates as $contentline) {
echo json_encode($contentline);
}
您可以使用file
函数将文件读取到数组中。然后可以使用usort
:对数组进行排序
$fileName = 'n:/mydata.txt';
$lines = file($fileName);
usort($lines, function($a, $b) {
foreach (['a', 'b'] as $variable) {
$parts = explode(',', $$variable);
$$variable = DateTime::createFromFormat('j-n-Y', $parts[0]);
}
return $a < $b ? -1 : 1;
});
file_put_contents(implode("n", $lines), $fileName);