如何按 php 中的月份名称对多维数组进行排序
How to sort a multidimensional array by month names in php
我有一个包含月份的多维数组 names.I 想按月份名称排序,例如 jan.feb、march.I 尝试过 usort、multi_sort 等,但这些方法都没有能够缩短它们。所以为此寻找其他解决方案。
Array
(
[0] => Array
(
[netDed] => 22128.00
[netEran] => 91032.00
[compiled_month] => Mar/2021
)
[1] => Array
(
[netDed] => 22970.00
[netEran] => 71330.00
[compiled_month] => May/2021
)
[2] => Array
(
[netDed] => 22970.00
[netEran] => 71330.00
[compiled_month] => Jun/2021
)
[3] => Array
(
[netDed] => 65970.00
[netEran] => 28330.00
[compiled_month] => Jul/2021
)
[4] => Array
(
[netDed] => 10396.00
[netEran] => 27324.00
[compiled_month] => Jan/2021
)
[5] => Array
(
[netDed] => 20792.00
[netEran] => 54648.00
[compiled_month] => Feb/2021
))
谢谢! (提前)
一种方法,使用 usort()
和适当的比较函数是一种选择:
<?php
$array = array(
array("netDe" => 22970.00, "netEran" => 71330.00, "compiled_month" => "May/2021"),
array("netDe" => 22970.00, "netEran" => 71330.00, "compiled_month" => "Jun/2021"),
array("netDe" => 65970.00, "netEran" => 28330.00, "compiled_month" => "Jul/2021"),
array("netDe" => 10396.00, "netEran" => 27324.00, "compiled_month" => "Jan/2021"),
array("netDe" => 20792.00, "netEran" => 54648.00, "compiled_month" => "Feb/2021" )
);
usort(
$array,
function ($a, $b) {
return
DateTime::createFromFormat('d/M/Y', "01/".$a["compiled_month"]) <=>
DateTime::createFromFormat('d/M/Y', "01/".$b["compiled_month"]);
}
);
?>
我有一个包含月份的多维数组 names.I 想按月份名称排序,例如 jan.feb、march.I 尝试过 usort、multi_sort 等,但这些方法都没有能够缩短它们。所以为此寻找其他解决方案。
Array
(
[0] => Array
(
[netDed] => 22128.00
[netEran] => 91032.00
[compiled_month] => Mar/2021
)
[1] => Array
(
[netDed] => 22970.00
[netEran] => 71330.00
[compiled_month] => May/2021
)
[2] => Array
(
[netDed] => 22970.00
[netEran] => 71330.00
[compiled_month] => Jun/2021
)
[3] => Array
(
[netDed] => 65970.00
[netEran] => 28330.00
[compiled_month] => Jul/2021
)
[4] => Array
(
[netDed] => 10396.00
[netEran] => 27324.00
[compiled_month] => Jan/2021
)
[5] => Array
(
[netDed] => 20792.00
[netEran] => 54648.00
[compiled_month] => Feb/2021
))
谢谢! (提前)
一种方法,使用 usort()
和适当的比较函数是一种选择:
<?php
$array = array(
array("netDe" => 22970.00, "netEran" => 71330.00, "compiled_month" => "May/2021"),
array("netDe" => 22970.00, "netEran" => 71330.00, "compiled_month" => "Jun/2021"),
array("netDe" => 65970.00, "netEran" => 28330.00, "compiled_month" => "Jul/2021"),
array("netDe" => 10396.00, "netEran" => 27324.00, "compiled_month" => "Jan/2021"),
array("netDe" => 20792.00, "netEran" => 54648.00, "compiled_month" => "Feb/2021" )
);
usort(
$array,
function ($a, $b) {
return
DateTime::createFromFormat('d/M/Y', "01/".$a["compiled_month"]) <=>
DateTime::createFromFormat('d/M/Y', "01/".$b["compiled_month"]);
}
);
?>