Сортировать многомерный массив (PHP) - сложность даты и подсчет - PullRequest
3 голосов
/ 24 марта 2012

У меня есть следующий вывод массива с использованием PHP.Мне нужно сделать две вещи ... Во-первых, мне нужно отсортировать массив, чтобы он печатал по самой последней дате.Я не могу использовать простую сортировку, потому что дата выводится в формате мм / дд / гггг (а не обычная отметка времени) ...

Затем мне нужно посчитать, сколько строк существует для каждогогод.Итак, в приведенном ниже примере мне нужно знать, что есть ...

  • 2 записи из 2010
  • 2 записи из 2011
  • 1 запись из2012
  • Прекратить считать, когда строк больше нет

Поскольку год не отделен от остальных цифр даты, это также усложняет ситуацию ...

Array
(
    [0] => Array
        (
            [racer_date] => 11/15/2010
            [racer_race] => Test Row 4
            [racer_event] => 321
            [racer_time] => 16
            [racer_place] => 12
            [racer_medal] => 1
        )

    [1] => Array
        (
            [racer_date] => 7/15/2010
            [racer_race] => Test Row 3
            [racer_event] => 123
            [racer_time] => 14
            [racer_place] => 6
            [racer_medal] => 0
        )

    [2] => Array
        (
            [racer_date] => 7/28/2011
            [racer_race] => Test Row
            [racer_event] => 123
            [racer_time] => 10
            [racer_place] => 2
            [racer_medal] => 2
        )

    [3] => Array
        (
            [racer_date] => 10/9/2011
            [racer_race] => Test Row 2
            [racer_event] => 321
            [racer_time] => 12
            [racer_place] => 3
            [racer_medal] => 3
        )

    [4] => Array
        (
            [racer_date] => 10/3/2012
            [racer_race] => World Indoor Championships (final)
            [racer_event] => 400m
            [racer_time] => 50.79
            [racer_place] => 1
            [racer_medal] => 1
        )

)

1 Ответ

2 голосов
/ 24 марта 2012
function cmp($a, $b)
{
    if (strtotime($a["racer_date"]) == strtotime($b["racer_date"])) {
        return 0;
    }
    return (strtotime($a["racer_date"]) < strtotime($b["racer_date"])) ? -1 : 1;
}

usort($array, "cmp");

вызовите ваш массив $ array, и код выше рассортирует его .. И для подсчета сущностей вам нужно будет запустить foreach и проверить date('Y',strtotime($a["racer_date"])) в этом foreach, который даст вам год в 4-значном виде.1003 *

...