Сортировка многомерного массива по 2 различным значениям в PHP - PullRequest
2 голосов
/ 07 января 2012

У меня есть массив (ниже). Я хочу отсортировать его по 2 различным значениям, сначала по значению в «переопределить», которое будет целое число 1-9. Затем, если 0 или ноль, я хочу, чтобы массив сортировать по «total_rank». Таким образом, если переопределение имеет 3 различных значения 213, а затем общий ранг равен 1,4, 1,6, 1,2, массив будет реорганизован в первую строку с переопределением - 1, 2, 3. Следующая строка будет строкой с total_rank, являющимся 1,2, затем 1,4, 1,6.

Извините, если я не объясняю это так ясно, как хотелось бы. Я пытался использовать arsort (), но не смог заставить его делать то, что я хочу (я новичок в PHP).

Буду признателен за любую помощь, пример строки многомерного массива ниже:

 array(16) {
  ["id"]=>
  string(1) "3"
 ["title"]=>
  string(5) "test2"
  ["description"]=>
  string(5) "test2"
  ["requester"]=>
  string(1) "1"
  ["project_id"]=>
  string(1) "2"
  ["client_ranking"]=>
  string(1) "5"
  ["tech_ranking"]=>
  string(1) "5"
  ["time_ranking"]=>
  string(1) "5"
  ["pm_ranking"]=>
  string(1) "5"
  ["total_rank"]=>
  string(3) "1.8"
  ["datecreated"]=>
  string(19) "2012-01-05 11:58:13"
  ["dateclosed"]=>
  string(19) "2012-01-05 11:58:13"
  ["ispending"]=>
  string(1) "1"
  ["isclosed"]=>
  string(1) "0"
  ["override"]=>
  string(1) "5"
  ["developer"]=>
  string(1) "1"

1 Ответ

1 голос
/ 07 января 2012

Если я вас правильно понял, вы можете попробовать использовать usort:

function cmp($a, $b)
{
    // if 'override' is same we compare 'total_rank'
    if ($a['override'] == $b['override']) {
        if ($a['total_rank'] == $b['total_rank'])
            return 0;
        return ($a['total_rank'] < $b['total_rank']) ? -1 : 1;
    }
    // else compare 'override'
    return ($a['override'] < $b['override']) ? -1 : 1;
}
usort($array, "cmp");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...