我有以下数据我已经构建(例如简化)并且在PHP中[start_date]排序数据时遇到问题 - 非常感谢任何帮助,谢谢你我拉我的头发用usort等!!
[1338] => Array
(
[0] => stdClass Object
(
[id] => 193
[data] => 1338
[num] => 2
)
[start_date] => 2014-09-13
)
[618] => Array
(
[0] => stdClass Object
(
[id] => 193
[data] => 1338
[num] => 2
)
[1] => stdClass Object
(
[id] => 193
[data] => 1338
[num] => 2
)
[start_date] => 2014-06-20
)
[349] => Array
(
[0] => stdClass Object
(
[id] => 887
[data] => 223
[num] => 2
)
[1] => stdClass Object
(
[id] => 887
[data] => 224
[num] => 2
)
[start_date] => 2014-08-20
)
答案 0 :(得分:2)
usort是要走的路:
usort($array, function($a,$b){
return strtotime($a["start_date"]) - strtotime($b["start_date"]);
});
答案 1 :(得分:0)
试试这个
function cmp($a, $b){
$a = strtotime($a['start_date']);
$b = strtotime($b['start_date']);
if ($a == $b) {
return 0;
}
return ($a < $b) ? -1 : 1;
}
usort($array, "cmp");
答案 2 :(得分:0)
Shakti Patel的答案基本上有效(谢谢先生!) - 但我需要保留原始索引(我应该在原来的问题中让这个更清晰) - 所以这里是我使用uasort的例子()维护索引:
function cmp($a, $b){
$a = strtotime($a['start_date']);
$b = strtotime($b['start_date']);
if ($a == $b) {
return 0;
}
return ($a < $b) ? -1 : 1;
}
uasort($array, "cmp");