[英]PHP: Sort multi-dimensional array by date
我有一个看起来像这样的数组:
Array (
[0] =>
Array (
[2014-05-31] => value1
)
[1] =>
Array (
[2014-04-17] => value2
)
[2] =>
Array (
[2014-04-21] => value3
)
)
....等等....
我想按日期从高到低(或从最低到最高-哪个都不重要)对整个数组进行排序。 我已经研究过ksort,但是我只能让它根据已经正确排序的索引( [0], [1], [2]
)对数组进行排序。 我想要的是这样的:
Array (
[1] =>
Array (
[2014-04-17] => value2
)
[2] =>
Array (
[2014-04-21] => value3
)
[0] =>
Array (
[2014-05-31] => value1
)
)
在上面的示例中,我们从最早的日期到最新的日期对其进行了排序。 我该如何实现?
usort(
$array,
function($a, $b) {
return strcmp(key($a), key($b));
}
);
您可以将usort用于用户定义的比较。
尝试这个 -
$arr = Array (
Array(
"2014-05-31" => "value1"
),
Array (
"2014-04-17" => "value2"
),
Array (
"2014-04-21" => "value 3"
)
);
$res = usort($arr, function($a, $b){
$par1 = key($a);
$par2 = key($b);
if ($par1 == $par2) {
return 0;
}
return ($par1 < $par2) ? -1 : 1;
});
var_dump($arr);
/*
OUTPUT
array
0 =>
array
'2014-04-17' => string 'value2' (length=6)
1 =>
array
'2014-04-21' => string 'value 3' (length=7)
2 =>
array
'2014-05-31' => string 'value1' (length=6)
*/
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.