Универсальное формирование массива

Diana95

Новичок
И снова здравствуйте (для тех кто меня помнит, потому что прошлая тема уже засорена) нужна помощь в задании, дан массив вида:
$array= array(
0=>array("name"=>"Ivan", 'id'=>5, 'city' => 'Piter'),
1=>array("name"=>"Ivan", 'id'=>10, 'city' => 'Moscow'),
2=>array("name"=>"Sergei", 'id'=>3, 'city' => 'Piter'),
3=>array("name"=>"Ivan", 'id'=>4, 'city' => 'Piter'));

Код полностью:
PHP:
<?php
function resort($array, $key){
$res = array();
      foreach($array as $el){
//      if($el[$key] == $el[$key])
            $res[$el[$key]][] = $el;
      }
    return isset($res) ? $res : false;
}
$array= array(
    0=>array("name"=>"Ivan", 'id'=>5, 'city' => 'Piter'),
    1=>array("name"=>"Ivan", 'id'=>10, 'city' => 'Moscow'),
    2=>array("name"=>"Sergei", 'id'=>3, 'city' => 'Piter'),
    3=>array("name"=>"Ivan", 'id'=>4, 'city' => 'Piter'));
$key = array('city','name'); //вот собственно форма по которой будет идти группировка
$res=resort($array, 'name');
function myCmp($a, $b) {
    if ($a['id'] === $b['id']) return 0;
    return $a['id'] > $b['id'] ? 1 : -1;
}
foreach($res as &$value){
    uasort($value, 'myCmp');
}
echo '<pre>' . print_r($res,1) . '</pre>';
?>
И если я задаю $key = array('city','name');, то должен отсортировать сначала по городам, например, Piter следом всех по именам, т.е. все Ivan и Sergei, которые в этом городе живут и там lдалее, как видите у меня реализована только группировка по 1 полю, которое я укажу тут - $res=resort($array, 'name');, поэтому как бы просто ещё один уровень добавился. НО! надо придумать, чтобы программа при дальнейших добавлениях новых полей снова формировалась не только как сейчас 2-х уровневый, т.е. была универсальной.

P.S. Для тех кто решит эту задачу, оставьте номер своего кошелька в долгу не останусь.
 

Diana95

Новичок
Можно в принципе и БД, но я ещё на PHP такого не реализовала, но посмотреть хотелось бы как это выглядит.
 

WMix

герр M:)ller
Партнер клуба
создай табличку в базе, пройдись циклом по масиву записывая каждую строчку в эту табличку, а дальше простой select
пробуй копать отсюда http://www.php.net/manual/ru/book.mysql.php
 
Сверху