Есть ли способ использовать array_multisort с пользовательским заказом? Мне нужно, чтобы результаты отображались в порядке дат, причем первая дата является датой, ближайшей к сегодняшней, как вы можете видеть из кода под полем matchDate в виде строки, которую я позже преобразовываю в значение даты.
foreach($matchLists as $matchList)
{
$fixtures[] = $matchList['matchDate'];
}
array_multisort($fixtures, SORT_DESC, $matchLists);$newlist = array();
foreach($matchLists as $key => $matchitem)
{
if(array_key_exists('matchDate', $matchitem))
{
$newlist[$matchitem['matchDate']][$key] = ($matchitem);
}}
foreach($newlist as $key => $value)
{
$fixtureDate = date('D j M Y ga', strtotime($key));
}
Да, посмотрите на один из моих предыдущий ответ на SO:
<?php
$events = array(
'event1' => array(
'event_name' => 'Title for Event 1',
'event_date' => '2017-11-1'
),
'event3' => array(
'event_name' => 'Title for Event 1',
'event_date' => '2017-10-13'
),
'event4' => array(
'event_name' => 'Title for Event 1',
'event_date' => '2017-11-10'
),
'event2' => array(
'event_name' => 'Title for Event 1',
'event_date' => '2017-10-22'
),
);
function date_compare($a, $b)
{
// note that the variables are calling for the date part of the array
// if you are using assoc array from mysql just change the value
// to your row name
$t1 = strtotime($a['event_date']);
$t2 = strtotime($b['event_date']);
return $t1 - $t2;
}
usort($events, 'date_compare');
print_r($events);
Здесь у вас есть массив с датой, вы создаете date_compare
функция, а затем usort
отсортировать массив по дате.
Надеюсь это поможет
Других решений пока нет …