Сортировка и перестановка элементов массива - PullRequest
1 голос
/ 15 ноября 2010
$people = array(
    array('id' => 12345,'first_name' => 'Joe1','date' => '02/06/2011'),
    array('id' => 12346,'first_name' => 'Joe','date' => '01/27/2011'),
    array('id' => 12347,'first_name' => 'rah','date' => '01/22/2011'),
    array('id' => 12348,'first_name' => 'sar','date' => '02/21/2011'),
    array('id' => 12349,'first_name' => 'raj','date' => '04/18/2011'),
    array('id' => 12350,'first_name' => 'viv','date' => '01/31/2011'),
);

Я хочу, чтобы элементы этого массива сортировались по дате, а затем переставляли элементы массива в порядке возрастания даты в php. скажем, что процесс после должен выглядеть следующим образом,

var_export($people); 
//answer

array(
  array('id' => 12347, 'first_name' => 'rah', 'date' => '01/22/2011'),
  array('id' => 12346, 'first_name' => 'Joe', 'date' => '01/27/2011'),
  array('id' => 12350, 'first_name' => 'viv', 'date' => '01/31/2011'),
  array('id' => 12345, 'first_name' => 'Joe1', 'date' => '02/06/2011'),
  array('id' => 12348, 'first_name' => 'sar', 'date' => '02/21/2011'),
  array('id' => 12349, 'first_name' => 'raj', 'date' => '04/18/2011')
)

Ответы [ 2 ]

0 голосов
/ 15 ноября 2010

Если вы хотите сделать это вручную (с помощью usort()):

function mdy2ymd($date) {
        $parts = explode('/', $date);
        return $parts[2] . $parts[0] . $parts[1]; // YYYYMMDD
}

function sortByDate($a, $b) {
        return mdy2ymd($a['date']) - mdy2ymd($b['date']);
}

usort($people, 'sortByDate');

( Демо )

sortByDate() - функция сравнения, а mdy2ymd() - всего лишь помощник для сопоставления отметок времени в форме MM/DD/YYYY.

0 голосов
/ 15 ноября 2010

См. array_multisort пример # 3

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