php - 如何按属性值对数组进行排序
问题描述
我有一个包含一些字符串和日期的数组,
[
{
date : '25-05-2018',
string : 'foo'
},
{
date : '15-01-2017,
string : 'baz'
},
{
date : '10-07-2018',
string : 'bar'
}
]
我需要根据日期字段对数组进行排序。有没有一种有效的方法来排序这个数组?
注意:数组可能有 +250 行,它们不是来自数据库。
解决方案
$json = '[
{
"date" : "25-05-2018",
"string" : "foo"
},
{
"date" : "15-01-2017",
"string" : "baz"
},
{
"date" : "10-07-2018",
"string" : "bar"
}
]';
$array = json_decode($json, true);
usort($array, function($a, $b) {
$a = DateTime::createFromFormat('d-m-Y', $a['date']);
$b = DateTime::createFromFormat('d-m-Y', $b['date']);
return $a < $b; //change direction for asc/desc
});
var_dump($array);
输出
array (size=3)
0 =>
array (size=2)
'date' => string '10-07-2018' (length=10)
'string' => string 'bar' (length=3)
1 =>
array (size=2)
'date' => string '25-05-2018' (length=10)
'string' => string 'foo' (length=3)
2 =>
array (size=2)
'date' => string '15-01-2017' (length=10)
'string' => string 'baz' (length=3)
推荐阅读
- pandas - 如何在 mplfinance 的每条线上添加点(ohlcv 绘制为线)变化?
- julia - Julia中的结构继承
- r - 从日期时间中提取时间分量(格式 - HH:MM:SS 和 HH:MM)
- javascript - 如何仅上传输入类型文件中的文件而不发送整个表单?
- msbuild - 如何在输出中包含自定义目标生成的额外文件?
- c++ - 如何在构造函数中初始化字符串[20]?
- database - 无法将联系人保存到本地数据库中
- javascript - 根据对象中的键名过滤对象数组
- java - Spring中计划任务执行的延迟
- marklogic - 文件打开错误 - 不允许操作,尝试运行应用程序服务器时在 macos 上收到此错误