У меня есть этот массив
Array
(
[0] => Array
(
[meeting_archive_id] => 1
[corp_aggregate_id] => 1
[created_by] => 103
[created_to] => 2
[date] => 15-07-2016
[time] => 10:00 am
[entry_id] => 103
[user_type] => 1
[firstname] => Kenyon
[lastname] => Martena
[job_title] =>
[email] =>
[company_name] => Lorem Ipsum Sodales Incorporated
[phone] => 1-446-161-3194
[type] => meeting
)
[1] => Array
(
[meeting_archive_id] => 16
[corp_aggregate_id] => 2
[created_by] => 103
[created_to] => 6
[date] => 17-07-2016
[time] => 1:00 am
[entry_id] => 103
[user_type] => 1
[firstname] => Hedley
[lastname] => Aurelia
[job_title] =>
[email] =>
[company_name] => Sit Amet Ante Corp.
[phone] => 1-484-144-8520
[type] => meeting
)
[2] => Array
(
[user_type] => 2
[firstname] => Abbot
[lastname] => Odessa
[job_title] =>
[email] =>
[company_name] => Fermentum Vel Mauris Consulting
[phone] => 1-912-440-1465
[type] => event
[meeting_archive_id] => 69
[date] => 02-08-2016
[time] => 8.00
[corp_aggregate_id] =>
[inves_aggregate_id] =>
)
[3] => Array
(
[user_type] => 1
[firstname] => Kenyon
[lastname] => Martena
[job_title] =>
[email] =>
[company_name] => Lorem Ipsum Sodales Incorporated
[phone] => 1-446-161-3194
[type] => event
[meeting_archive_id] => 70
[date] => 15-07-2016
[time] => 8.00
[corp_aggregate_id] =>
[inves_aggregate_id] =>
)
)
Мне нужно отсортировать этот массив по дате
Вы можете попробовать этот фрагмент следующим образом:
foreach ($originalArray as $key => $part){
$sort[$key] = strtotime($part['date']);
}
array_multisort($sort, SORT_DESC, $originalArray);
Вы можете попробовать с помощью usort:
usort($array, function($a, $b) {
$d1 = strtotime($a['date']);
$d2 = strtotime($b['date']);
return $d1 - $d2;
});
$a
а также $b
являются массивами, которые являются частью основного массива $array
а потом делайте сравнение своего времени.
Исходное определение usort:
bool usort ( array &$array , callable $value_compare_func )
и вызываемая функция:
int callback ( mixed $a, mixed $b )
В нашем случае вызываемая функция:
function($a, $b) {
$d1 = strtotime($a['date']);
$d2 = strtotime($b['date']);
return $d1 - $d2;
}
usort работает с массивом в качестве первого и второго аргумента вызываемой функции. Эта вызываемая функция кроме получения двух элементов массива. Внутренне он использует алгоритм быстрой сортировки, и вызываемая функция должна возвращать целочисленные значения 0, 1 или -1.
Если две даты (или что-либо, что следует сравнить) равны, функция должна вернуть 0.
Если первый элемент больше, он должен вернуть 1
Если второй элемент больше, он должен вернуть -1
Входной массив (первый параметр в функции usort) передается по ссылке, поэтому ваш массив будет сразу отсортирован после вызова usort.