PHP сортировка массива по значению анонимной функцией
2021-10-19
На эту тему написан миллион статей, но когда начинаешь искать любой простой пример, как обычно, ничего толкового не найдешь. Поэтому, сделаю миллионпервый пример для себя.
Есть массив с девушками и датами свиданий. Нужно отсортировать по дате, чтобы не перепутать.
Для удобства и простоты кода использую анонимную функцию сортировки.
// Изначальный массив идет не по порядку. Даты свиданий указаны как значение вложенного массива.
$datings = [
0 => [ 'name' => 'Lisa', 'date' => '12.02.2021' ],
1 => [ 'name' => 'Nataly', 'date' => '23.12.2020' ],
2 => [ 'name' => 'Irene', 'date' => '18.10.2021' ],
3 => [ 'name' => 'Mary', 'date' => '01.04.2021' ],
];
// сортировка функцией usort, в callback-параметре которой анонимная функция, выполняющая сортировку
usort($datings, function($a, $b) {
$ad = strtotime($a['date']);
$bd = strtotime($b['date']);
if ($ad == $bd) {
return 0;
}
return $ad < $bd ? -1 : 1;
});
// результат
array(4) {
[0]=>
array(2) {
["name"]=>
string(6) "Nataly"
["date"]=>
string(10) "23.12.2020"
}
[1]=>
array(2) {
["name"]=>
string(4) "Lisa"
["date"]=>
string(10) "12.02.2021"
}
[2]=>
array(2) {
["name"]=>
string(4) "Mary"
["date"]=>
string(10) "01.04.2021"
}
[3]=>
array(2) {
["name"]=>
string(5) "Irene"
["date"]=>
string(10) "18.10.2021"
}
}