PHP Custom array сортирует имена файлов по годам и месяцам, сначала самые новые - PullRequest
0 голосов
/ 23 февраля 2011

У меня есть массив файлов, который выглядит так:

array (
  0 => 'scpt-01-2010.phtml',
  1 => 'scpt-01-2011.phtml',
  2 => 'scpt-02-2010.phtml',
  3 => 'scpt-02-2011.phtml',
  4 => 'scpt-03-2010.phtml',
  5 => 'scpt-04-2010.phtml',
  6 => 'scpt-05-2010.phtml',
  7 => 'scpt-06-2010.phtml',
  8 => 'scpt-07-2010.phtml',
  9 => 'scpt-08-2010.phtml',
  10 => 'scpt-09-2010.phtml',
  11 => 'scpt-10-2010.phtml',
  12 => 'scpt-11-2010.phtml',
  13 => 'scpt-12-2010.phtml',
);

Как я могу отсортировать его так, чтобы файлы 2011 года появлялись первыми в порядке месяца (поэтому он должен указывать scpt-02-2011.phtml )?

Я пробовал основные функции сортировки, такие как natsort, rsort, arsort и т. Д., Но быстро никуда не денусь!

Спасибо заранее.

Ответы [ 2 ]

1 голос
/ 23 февраля 2011
function customSort($a, $b) {
    // extract the values with a simple regular expression
    preg_match('/scpt-(\d{2})-(\d{4})\.phtml/i', $a, $matches1);
    preg_match('/scpt-(\d{2})-(\d{4})\.phtml/i', $b, $matches2);

    // if the years are equal, compare by month
    if ($matches2[2] == $matches1[2]) {
        return $matches2[1] - $matches1[1];
    // otherwise, compare by year
    } else {
        return $matches2[2] - $matches1[2];
    }
}

// sort the array
usort($array, 'customSort');

Этот метод использует usort() для сортировки массива, передавая имя нашей функции сравнения.

http://php.net/usort

0 голосов
/ 23 февраля 2011

Используйте usort () , это позволяет вам написать свой собственный обратный вызов и отсортировать по-своему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...