Бортовой журнал Ктулху

PHP сортировка массива по значению анонимной функцией

На эту тему написан миллион статей, но когда начинаешь искать любой простой пример, как обычно, ничего толкового не найдешь. Поэтому, сделаю миллионпервый пример для себя.

Есть массив с девушками и датами свиданий. Нужно отсортировать по дате, чтобы не перепутать.

Для удобства и простоты кода использую анонимную функцию сортировки.

 

// Изначальный массив идет не по порядку. Даты свиданий указаны как значение вложенного массива.
$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"
    }
}