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

Тема в разделе "PHP", создана пользователем rasandrey, 11 окт 2010.

Статус темы:
Закрыта.
Модераторы: latteo
  1. rasandrey

    rasandrey

    Регистр.:
    2 апр 2009
    Сообщения:
    214
    Симпатии:
    6
    Есть такой массив:
    PHP:
        $maska_go[1]['id'] = '1' ;
        
    $maska_go[1]['name'] = '1900' ;
        
        
    $maska_go[2]['id'] = '2' ;
        
    $maska_go[2]['name'] = '1904' ;
        
        
    $maska_go[3]['id'] = '3' ;
        
    $maska_go[3]['name'] = '1903' ;
        
        
    $maska_go[4]['id'] = '4' ;
        
    $maska_go[4]['name'] = '1902' ;
        
        
    $maska_go[5]['id'] = '5' ;
        
    $maska_go[5]['name'] = '1901' ;
    Как можно отсортировать массив, чтобы в итоге значения $maska_go[$i]['name'] были отсортированы в порядке убывания? Т.е. на выходе получить такой масссив:
    PHP:
        $maska_go[1]['id'] = '5' ;
        
    $maska_go[1]['name'] = '1904' ;
        
        
    $maska_go[2]['id'] = '4' ;
        
    $maska_go[2]['name'] = '1903' ;
        
        
    $maska_go[3]['id'] = '3' ;
        
    $maska_go[3]['name'] = '1902' ;
        
        
    $maska_go[4]['id'] = '2' ;
        
    $maska_go[4]['name'] = '1901' ;
        
        
    $maska_go[5]['id'] = '1' ;
        
    $maska_go[5]['name'] = '1900' ;
     
  2. t3s

    t3s

    Регистр.:
    16 фев 2008
    Сообщения:
    719
    Симпатии:
    290
    rsort()
    http://php.net/manual/en/function.rsort.php
     
  3. rasandrey

    rasandrey

    Регистр.:
    2 апр 2009
    Сообщения:
    214
    Симпатии:
    6
    функция сортирует по индексам массива, а мне нужно по значению $maska_go[$i]['name']
     
  4. propovednik

    propovednik Постоялец

    Регистр.:
    16 май 2008
    Сообщения:
    104
    Симпатии:
    21
    PHP:
    function compare_id($a$b)
    {
      return 
    cmp($a['id'], $b['id']);
    }
    usort($maska_go'compare_id');
     
    rasandrey нравится это.
  5. pitkina

    pitkina

    Регистр.:
    1 апр 2007
    Сообщения:
    253
    Симпатии:
    176
    к примеру так, сортировка по значению 'name', 'id' изменяются, а индексы итогового массива начинаются с '1'

    PHP:
    $maska_go name_sort($maska_go);

    function 
    name_sort($arr) {
        foreach (
    $arr as $str)
        
    $res_arr[] = $str['name'];
        
    natsort($res_arr);
        
    $res_arr=array_reverse($res_arr);
        
    $i count($res_arr)+1;
        foreach (
    $res_arr as $str) { $a++; $i--;
        
    $res_arr2[$a] = array('id'=>$i,'name'=>$str); }
        return 
    $res_arr2; }
     
  6. sublimity

    sublimity Создатель

    Регистр.:
    7 янв 2008
    Сообщения:
    23
    Симпатии:
    3
    может ёщё пригодиться array_natsort_list()
     
  7. klev2004

    klev2004 Создатель

    Регистр.:
    21 авг 2009
    Сообщения:
    15
    Симпатии:
    0
    PHP:
    //сортировка по ключам
    ksort($maska_go);
    print_r($maska_go);

    //сортировка по ключам в обратном порядке
    krsort($maska_go);
    print_r($maska_go);
    Это то что вам нужно.
     
Статус темы:
Закрыта.