Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Можно ли отсортировать массив по ключу ? 
:(
    Опции темы
nepster
Дата 22.7.2012, 23:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 300
Регистрация: 26.4.2009

Репутация: нет
Всего: нет



есть массив: 

Код

Array
(
    [0] => Array
        (
            [id] => 1
            [login] => zowen
            [uid] => 3153815
            [rating] => 5
        )

    [1] => Array
        (
            [id] => 13
            [login] => qwerty
            [rating] => 7
        )

    [2] => Array
        (
            [id] => 182
            [login] => zet
            [rating] => 7
        )

    [2] => Array
        (
            [id] => 181
            [login] => zet
            [rating] => 71
        )

)



Как можно его отсортировать по ключу  [rating], что бы получить: 


Код

Array
(

    [0] => Array
        (
            [id] => 181
            [login] => zet
            [rating] => 71
        )

    [1] => Array
        (
            [id] => 13
            [login] => qwerty
            [rating] => 7
        )

    [2] => Array
        (
            [id] => 182
            [login] => zet
            [rating] => 7
        )
    [3] => Array
        (
            [id] => 1
            [login] => zowen
            [uid] => 3153815
            [rating] => 5
        )

)



PM MAIL   Вверх
dnts
Дата 22.7.2012, 23:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 24.4.2011

Репутация: нет
Всего: нет



PM MAIL   Вверх
Sanchezzz
Дата 22.7.2012, 23:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1670
Регистрация: 19.11.2006
Где: Voronezh

Репутация: 41
Всего: 60



usort + пользовательская функция сортировки по ключу кто мешает применить способ
сортировка по DESC  по ASC поменять больше на меньше.
Код

    $test[] = array('id' => 181 , 'login'  => 'zet','rating' => 71);
       $test[] = array('id' => 182 , 'login'  => 'zet','rating' => 171);
    $test[] = array('id' => 183 , 'login'  => 'zet','rating' => 13);
    $test[] = array('id' => 180 , 'login'  => 'zet','rating' => 1223);
    
    
    print "<pre>";
     usort($test , 'cmp');
     print_R($test);
    print "</pre>";
    
    function cmp($a, $b) {
        return $a['rating'] > $b['rating'] ? -1 : 1;
    }



--------------------
Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS.
PM MAIL Skype GTalk   Вверх
nepster
Дата 23.7.2012, 15:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 300
Регистрация: 26.4.2009

Репутация: нет
Всего: нет



Код


$pag_data['array'] // получаем массив ;

    function cmp($a, $b) {
        return $a['rating'] > $b['rating'] ? -1 : 1;
    }

     usort($pag_data['array'] , "cmp");


foreach($pag_data['array'] as $user) {
 ... 


Без изменений. 

если сделать 
        
        
Код

$pag_data['array'] = usort($pag_data['array'] , "cmp");

        
        то вернет 1
        
        
подскажите пожалуйста, в чем тут ошибка ?

Добавлено через 6 минут и 13 секунд
Всем спасибо. Разобрался. 
PM MAIL   Вверх
nepster
Дата 23.7.2012, 16:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 300
Регистрация: 26.4.2009

Репутация: нет
Всего: нет



еще возникла такая проблема, если идет класс, то как использовать в данном случае: 

Код

 function cmp($a, $b) { return $a['rating'] > $b['rating'] ? -1 : 1; }    
            
    
  function number_rating($topic_id = false) {
        
         $CI = &get_instance();
        
    // ДОБАВИМ ПОЛЕ РЕЙТИНГ
    for($i=0; $i<count($UserData);$i++) {
        $UserData[$i]['rating'] = $this->user_rating($UserData[$i]['id']);
    }
        
    // СОРТИРУЕМ ПО ПОЛЮ РЕЙТИНГ
    usort($UserData , "cmp"); <---------- как в таком случае передать usort cmp? (в данном случае вызов cmp - $this->cmp())


PM MAIL   Вверх
Sanchezzz
Дата 23.7.2012, 17:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1670
Регистрация: 19.11.2006
Где: Voronezh

Репутация: 41
Всего: 60



Точно также как и для всех callback аргументов
Код

  usort($UserData , array("имя класса", "имя функции "));


Это сообщение отредактировал(а) Sanchezzz - 23.7.2012, 17:06


--------------------
Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS.
PM MAIL Skype GTalk   Вверх
nepster
Дата 23.7.2012, 19:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 300
Регистрация: 26.4.2009

Репутация: нет
Всего: нет



спасибо, все сработало. 

Мое понимание англ. равно 0 и не всегда удается понимать оф. документаци. Еще раз большое спасибо . 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0804 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.