【问题标题】:PHP using array_multisort to sort multiple arrays by datePHP使用array_multisort按日期对多个数组进行排序
【发布时间】:2019-10-05 02:43:19
【问题描述】:

我有大约五个数组,其中一个包含日期。我想在包含日期的数组之后对这些进行排序。我知道如何使用“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');

【问题讨论】:

  • 发布您的数组和预期输出
  • 您是指其中一个还是每个?你应该展示一个例子
  • 等一下

标签: php arrays sorting date array-multisort


【解决方案1】:

如果我理解正确,您有(比如说 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,然后使用该新数组作为排序“键”对其余部分进行排序,因为 multisort 可以处理数字。

(未测试,只是我的理论)

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

【讨论】:

  • 嗯...听起来不错。我会尝试看看它是否有效
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-11-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-25
  • 2015-11-11
  • 2011-02-10
相关资源
最近更新 更多