php - 根据日期对多维数组进行排序
问题描述
我在文件中有文本形式的日期和名称,例如
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);
}
推荐阅读
- sql - 在 SQL Server 中选择以显示表 OnHand、Sale 和 Purchase 中的所有不同行,其中一个/或 Qty 字段不为空
- c++ - ffmpeg/Libavcodec 找不到编解码器
- vscode-extensions - vscode文件资源管理器复制/粘贴如何工作?
- javascript - DataTables 警告:表 id={id} - 请求行 {row-index}、列 {column-index} 的未知参数“{parameter}”
- java - 我需要一个循环来向用户询问 5 次 1 到 10 之间的数字
- java - 如何在 ListIterator(反向)迭代期间正确添加对象?
- r - 如何计算2个数据集分布之间的重叠
- javascript - 比较两个 JSONArray 并在 JAVASCRIPT 中获得差异
- javascript - 无法使用 worker-loader 创建 SharedWorker
- python - fillna() 不允许浮动值