@Shimpanze

Как отсортировать многомерный массив?

Как отсортировать такой многомерный массив, по полю "date"? В порядке убывания. Первое это число, второе - месяц.

Найденное в сети решение:

$field_name = "date";
usort( $array, function( $a, $b ) use ( &$field_name ) {
  return strtotime( $a[$field_name] ) - strtotime( $b[$field_name] );
});


...не работает.

array (
  0 =>
  array (
    'date' => '0802',
    'title' => 'Петя',
  ),
  1 =>
  array (
    'date' => '0105',
    'title' => 'Вася',
  ),
  2 =>
  array (
    'date' => '0404',
    'title' => 'Миша',
  ),
  3 =>
  array (
    'date' => '0801',
    'title' => 'Гриша',
  ),
)
  • Вопрос задан
  • 79 просмотров
Решения вопроса 1
1210mk2
@1210mk2
ТС, ваше решение тоже работает
пык
просто сорт наоборот.
судя по вашим форматам дат можно через int.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
0xD34F
@0xD34F
usort($array, function($a, $b) {
  $a = str_split($a['date'], 2);
  $b = str_split($b['date'], 2);
  $monthDiff = $b[1] - $a[1];
  return $monthDiff ? $monthDiff : ($b[0] - $a[0]);
});
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы