Jen*_*ell 33 php arrays sorting datetime date
可能重复:
PHP按包含日期的元素对多维数组进行排序
我在PHP数组中有一些来自XML或JSON的数据,如下所示:
[0]= array(2) {
["title"]= string(38) "Another title"
["date"]= string(31) "Fri, 17 Jun 2011 08:55:57 +0200"
}
[1]= array(2) {
["title"]= string(38) "My title"
["date"]= string(31) "Mon, 16 Jun 2010 06:55:57 +0200"
}
Run Code Online (Sandbox Code Playgroud)
我想要做的是按日期订购这两个项目.
我不想做什么
我可以使用日期并将其设置为ID,但感觉不对,因为两个项目可以具有相同的日期,然后它不会是唯一的.
KAR*_*ván 81
在排序之前,您不需要将日期转换为时间戳,但这是一个好主意,因为没有它需要更多时间进行排序.
$data = array(
array(
"title" => "Another title",
"date" => "Fri, 17 Jun 2011 08:55:57 +0200"
),
array(
"title" => "My title",
"date" => "Mon, 16 Jun 2010 06:55:57 +0200"
)
);
function sortFunction( $a, $b ) {
return strtotime($a["date"]) - strtotime($b["date"]);
}
usort($data, "sortFunction");
var_dump($data);
Run Code Online (Sandbox Code Playgroud)
phi*_*hag 35
使用usort:
usort($array, function($a1, $a2) {
$v1 = strtotime($a1['date']);
$v2 = strtotime($a2['date']);
return $v1 - $v2; // $v2 - $v1 to reverse direction
});
Run Code Online (Sandbox Code Playgroud)
Ond*_*tes 21
我建议使用DateTime对象而不是字符串,因为您无法轻松比较排序所需的字符串.使用日期还可以获得额外的优势.
获得DateTime对象后,排序非常简单:
usort($array, function($a, $b) {
return ($a['date'] < $b['date']) ? -1 : 1;
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
104694 次 |
| 最近记录: |