PHP使用array_multisort按日期对多个数组进行排序

时间:2019-05-17 18:42:23

标签: php arrays sorting date array-multisort

我大约有五个数组,其中一个包含日期。我想在包含日期的数组之后对它们进行排序。我知道如何使用“ usort”对日期数组进行排序。我也知道如何使用“ array_multisort”对多个数组进行排序,但是不知道如何将它们组合在一起。有办法吗?希望您能提供帮助,并告诉我是否需要更多信息来解决我的问题:)

编辑:

这是我的数组:

$fid=array(1, 2, 3, 4, 5, 6, 7, 8);
$ftitle=array("Title1", "Title2", "Title3", "Title4", "Title1", "Title2", "Title3", "Title4");
$fbeskrivelse=array("Beskrivelse1", "Beskrivelse2", "Beskrivelse3", "Beskrivelse4", "Beskrivelse1", "Beskrivelse2", "Beskrivelse3", "Beskrivelse4");
$fstøtter=array(2, 15, 7, 10, 3, 4, 5, 6);
$fstartdato=array('11-01-2012', '01-01-2014', '01-01-2015', '09-02-2013', '01-01-2013', '11-01-2017', '01-01-2018', '01-01-2019');

这是我想要的结果(排序后):

$fid=array(1, 3, 4, 2, 5, 6, 7, 8);
$ftitle=array("Title1", "Title3", "Title4", "Title2", "Title1", "Title2", "Title3", "Title4");
$fbeskrivelse=array("Beskrivelse1", "Beskrivelse3", "Beskrivelse4", "Beskrivelse2", "Beskrivelse1", "Beskrivelse2", "Beskrivelse3", "Beskrivelse4");
$fstøtter=array(2, 7, 10, 15, 3, 4, 5, 6);
$fstartdato=array('11-01-2012', '01-01-2013', '09-02-2013', '01-01-2014', '01-01-2015', '11-01-2017', '01-01-2018', '01-01-2019');

1 个答案:

答案 0 :(得分:2)

如果我正确理解,您有(要说3个)要排序的数组,其中一个包含日期,并且要按日期排序,因为多重排序不支持回调或排序日期,您不确定该怎么办?

例如

$arr1 = array('2019-05-15', '2019-05-17', '2019-05-13')
$arr2 = array('Wed','Fri','Mon');
$arr3 = array('Pork','Steak','Chicken');

如果是我,我可能只是将日期解析到一个新数组中的unix_time中,并使用该新数组作为我的排序“键”来对其余的排序,因为multisort可以做数字。

(未经测试,仅是我的理论)

$key = array_map('strtotime', $arr1);
array_multisort($key, SORT_ASC, SORT_NUMERIC, $arr1, $arr2, $arr3);