Сортировка нескольких массивов в php - PullRequest
0 голосов
/ 16 мая 2011

Может кто-нибудь помочь мне, мне нужно отсортировать этот массив:

$report_fields['client_id'] = $row['client_id'];
$report_fields['name'] = $row['name'];
$report_fields['is_authorized'] = $row['is_authorized'];
$report_fields['date_created'] = $row['date_created'];
$report_fields['service_id'] = $row['service_id'];
$report_fields['type_id'] = $row['type_id'];
$report_fields['report_name'] = $report_types[$row['type_id']]['type'];


$report_groups[$row['ref_no']][$row['id']] = $report_fields;

Я пробовал usort следующим образом:

usort($report_groups[$row['ref_no']],'cmp');

function cmp($a,$b) { 
   $a_stm = strtotime($a["date_created"]);
   $b_stm = strtotime($b["date_created"]);

   if ($a_stm == $b_stm) {
    return 0;
    }

   return ($a_stm < $b_stm) ? -1 : 1;

}

Но возвращаемый результат неверен.

Ответы [ 2 ]

1 голос
/ 16 мая 2011

array_multisort - это то, что вы хотите использовать.

Вот пример

<?php

$sort = array(
    array(),
    array()
);

foreach ($results as $k=>$result) {
    $sort[0][$k] = $result['sort_field_one'];
    $sort[1][$k] = $result['sort_field_two'];   
}


# sort using $sort[0] DESC and $sort[1] ASC
array_multisort($sort[0], SORT_DESC, $sort[1], SORT_DESC, $results);
0 голосов
/ 18 мая 2011

Хорошо ... ... друг помог мне решить эту проблему, вот решение.

    foreach($report_groups as $k => $v) {
    uasort($v, 'cmp');
    $report_groups[$k] = $v;
}

function cmp($a, $b) {
    return strtotime($a['date_created']) > strtotime($b['date_created']);
}

Спасибо за вашу помощь.

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