PHP 使用 array_multisort 按日期对多个数组进行排序
PHP using array_multisort to sort multiple arrays by date
我有大约五个数组,其中一个包含日期。我想在包含日期的数组之后对它们进行排序。我知道如何使用 "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');
如果我没理解错的话,你有(比方说 3)个数组要排序,其中一个包含日期,你想按日期排序,因为 multisort 不支持回调或按日期排序,您不确定该怎么做?
例如
$arr1 = array('2019-05-15', '2019-05-17', '2019-05-13')
$arr2 = array('Wed','Fri','Mon');
$arr3 = array('Pork','Steak','Chicken');
如果是我,我可能只是将日期解析为新数组中的 unix_time 并使用该新数组作为我的排序 "key" 对其余部分进行排序,因为 multisort 可以做到数字。
(未经测试,只是我的理论)
$key = array_map('strtotime', $arr1);
array_multisort($key, SORT_ASC, SORT_NUMERIC, $arr1, $arr2, $arr3);
我有大约五个数组,其中一个包含日期。我想在包含日期的数组之后对它们进行排序。我知道如何使用 "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');
如果我没理解错的话,你有(比方说 3)个数组要排序,其中一个包含日期,你想按日期排序,因为 multisort 不支持回调或按日期排序,您不确定该怎么做?
例如
$arr1 = array('2019-05-15', '2019-05-17', '2019-05-13')
$arr2 = array('Wed','Fri','Mon');
$arr3 = array('Pork','Steak','Chicken');
如果是我,我可能只是将日期解析为新数组中的 unix_time 并使用该新数组作为我的排序 "key" 对其余部分进行排序,因为 multisort 可以做到数字。
(未经测试,只是我的理论)
$key = array_map('strtotime', $arr1);
array_multisort($key, SORT_ASC, SORT_NUMERIC, $arr1, $arr2, $arr3);