Сортировка массива

Апокалипсис

тех дир matras.ru
Сортировка массива

Извиняюсь за тупой вопрос. Проблема с инетом еле сюда выбрался. Ман посмотреть не могу. Под рукой ничего нет.
Задача такая есть массив:
PHP:
$a = array(

"1" => array(
      "catid" => 40,
      "Model" => "Привет",
      ),
"2" => array("catid"=> 40,
      "Model" => "Абракодабра",
      ),
"3" => array("catid"=> 20,
       "Model" => "Медвед",
       ),
"4" => array("catid" => 20,
       "Model" => "Аааа"
       ),
       
"5" => array("catid"=> 30,
       "Model" => "Тест запись",
       ),
"6" => array("catid" => 30,
       "Model" => "Вторая"
       ),
);
Нужно его отсортировать по Model чтобы на выходе получить:
PHP:
$a = array(

"1" => array(
      "catid" => 40,
      "Model" => "Абракодабра",
      ),
"2" => array("catid"=> 40,
      "Model" => "Привет",
      ),
"3" => array("catid"=> 20,
       "Model" => "Аааа",
       ),
"4" => array("catid" => 20,
       "Model" => "Медвед"
       ),
       
"5" => array("catid"=> 30,
       "Model" => "Вторая",
       ),
"6" => array("catid" => 30,
       "Model" => "Тест запись"
       ),
);
Т.е. отсортировать по алфавиту Model но как бы внутри категории catid
Важен порядок catid т.е. как он идёт вначале 40 потом 20 потом 30....
Если можете подскажите решение, просто не имею возможности в маны лезть:(
 

Апокалипсис

тех дир matras.ru
Да я не могу к usort именно написать пользовательскую ф-цию.

Как я понимаю нужно собирать в другой массив порядок catid?
Я именно не знаю как написать пользовательскую ф-цию. Чтобы сохранить порядок.


А мана просто тут именно нет:(
 

Фанат

oncle terrible
Команда форума
ссылку на ман я тебе дал.
пользуйся на здоровье.

в пользовательской функции при сравнении конкатишь ид и текст
 

kruglov

Новичок
А массив вида
PHP:
"1" => array( 
      "catid" => 40, 
      "Model" => "Привет", 
      ), 
"2" => array("catid"=> 20, 
       "Model" => "Медвед", 
       ), 
"3" => array("catid"=> 40, 
      "Model" => "Абракодабра", 
      ),
Во что должен превращаться?
 

Апокалипсис

тех дир matras.ru
kruglov
Такой же остаётся также.


Спасибо tf он помог. Может кому то пригодитcя:
PHP:
function cmp($a, $b)
{
    if ($a['catid']  == $b['catid'] ) {
        return strcmp($a["Model"], $b["Model"]);
    }
    global $cat;
    $ia = array_search($a['catid'], $cat);
    $ib = array_search($b['catid'], $cat);
    return ($ia  < $ib ) ? -1 : 1;
}

$cat = array(40, 20, 60);
usort($a,"cmp");
 
Сверху