我想对以下数组进行排序:
Array(
[05/2017] => Array (
[city] => 'ABC'
[memebers] => '50'
)
[03/2017] => Array (
[city] => 'ABC'
[members] => '25'
)
[10/2016] => Array (
[city] => 'ABC'
[members] => '20'
)
[11/2017] => Array (
[city] => 'ABC'
[members] => '65'
)
)
预期结果:
Array(
[10/2016] => Array (
[city] => 'ABC'
[members] => '20'
)
[03/2017] => Array (
[city] => 'ABC'
[members] => '25'
)
[05/2017] => Array (
[city] => 'ABC'
[members] => '50'
)
[11/2017] => Array (
[city] => 'ABC'
[members] => '65'
)
)
我正在uksort
对它进行排序,但我想uksort
不适用于多维数组:
uksort($data, function($a1, $a2) {
$time1 = strtotime($a1);
$time2 = strtotime($a2);
return $time1 - $time2;
});
请建议它将如何工作uksort
或任何其他可能性?
这应该有效:
$data =
array(
'05/2017' => array (
'city' => 'ABC',
'memebers' => '50'
),
'03/2017' => array (
'city' => 'ABC',
'members' => '25'
),
'10/2016' => array (
'city' => 'ABC',
'members' => '20'
),
'11/2017' => array (
'city' => 'ABC',
'members' => '65'
),
);
uksort($data, function($a1, $a2) {
return DateTime::createFromFormat('m/Y|', $a1) <=> DateTime::createFromFormat('m/Y|', $a2);
});
var_dump($data);
您需要使用 DateTime,因为您的日期格式不正确,然后只需比较时间戳即可。正如 Mark 所指出的,使用 "m" 几个月,您可以使用 "<=>" 运算符(自 PHP 7 起)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句