Как отсортировать массив даты в PHP

18
задан Click Upvote 28 February 2009 в 11:16
поделиться

2 ответа

Используйте формат ISO (yyyy-mm-dd), а не "английский" формат, и затем просто используйте ksort функция для получения их в правильном порядке.

нет никакой потребности удалить дефисы, ksort сделает алфавитно-цифровое сравнение на строковых ключах, и yyyy-mm-dd работы формата отлично, поскольку лексический порядок совпадает с фактическим хронологическим порядком.

РЕДАКТИРОВАНИЕ я вижу, что Вы теперь исправили свой вопрос показать, что Вы на самом деле получили массив массивов, и что ключ сортировки находится в подмассивах. В этом случае необходимо использовать uksort, как рекомендуется в другом месте, но я рекомендовал бы пойти с собственным редактированием и видом на основе отформатированной даты DB, а не путем парсинга человекочитаемого формата:

function cmp($a, $b)
{
    global $array;
    return strcmp($array[$a]['db'], $array[$b]['db']);
}

uksort($array, 'cmp');
42
ответ дан 30 November 2019 в 06:05
поделиться
function cmp($a, $b) {    
    global $array;    
    return strcmp($array[$a]['db'], $array[$b]['db']); 
}    
uksort($array, 'cmp');

Думаю, лучше использовать функцию usort () вместо uksort () , потому что иногда вообще нельзя использовать глобальные переменные и в любом случае использование глобальных переменных тоже не является хорошей практикой.

4
ответ дан 30 November 2019 в 06:05
поделиться