X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость ( Вход | Регистрация )

2 страниц V   1 2 >
Открыть тему
Тема закрыта
> Отсортировать массив php
andreykashops
andreykashops
Topic Starter сообщение 9.8.2013, 16:55; Ответить: andreykashops
Сообщение #1


WordPress is my Life..
******

Группа: Active User
Сообщений: 1407
Регистрация: 21.7.2012
Из: Украины
Поблагодарили: 613 раз
Репутация:   135  


Добрый день!
У меня имеется такой массив:
Array
(
    [0] = Array
        (
            [tid] = 3
            [fid] = 5
            [t] = Как мы отдыхали
            [c] = 4
        )
    [1] = Array
        (
            [tid] = 4
            [fid] = 32
            [t] = Вторая поездка на море
            [c] = 2
        )
    [2] = Array
        (
            [tid] = 5
            [fid] = 5
            [t] = Удачная покупка квартиры
            [c] = 5
        )
)

подскажите, как его отсортировать в порядке убывания по ключу [c] ?..

Сообщение отредактировал andreykashops - 9.8.2013, 16:57


--------------------
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Pepper
Pepper
сообщение 9.8.2013, 17:16; Ответить: Pepper
Сообщение #2


Бывалый
****

Группа: User
Сообщений: 393
Регистрация: 14.1.2011
Поблагодарили: 123 раза
Репутация:   31  


function sort_callback($a, $b){
    return $a['c'] < $b['c'];
}

usort($arr, 'sort_callback');


Сообщение отредактировал Pepper - 9.8.2013, 17:16


Поблагодарили: (1)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
andreykashops
andreykashops
Topic Starter сообщение 9.8.2013, 17:17; Ответить: andreykashops
Сообщение #3


WordPress is my Life..
******

Группа: Active User
Сообщений: 1407
Регистрация: 21.7.2012
Из: Украины
Поблагодарили: 613 раз
Репутация:   135  


Pepper, работает, большое спасибо!


--------------------
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
x64
x64
сообщение 9.8.2013, 17:59; Ответить: x64
Сообщение #4


F.A.L.L.O.U.T.
*******

Группа: Super Moderator
Сообщений: 3158
Регистрация: 30.6.2011
Из: Железнодорожный (Балашиха)
Поблагодарили: 2527 раз
Репутация:   279  


а где же условие, если элементы равны?
при равенстве нужно возвращать ноль.


--------------------


Поблагодарили: (1)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Pepper
Pepper
сообщение 9.8.2013, 18:15; Ответить: Pepper
Сообщение #5


Бывалый
****

Группа: User
Сообщений: 393
Регистрация: 14.1.2011
Поблагодарили: 123 раза
Репутация:   31  


Чтоб было "по учебнику":

function sort_callback($a, $b){
     if($a['c'] == $b['c']){
         return 0;
   }
   return ($a['c'] > $b['c']) ? -1 : 1;
}


Сообщение отредактировал Pepper - 9.8.2013, 18:15


Поблагодарили: (1)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
DonC
DonC
сообщение 11.8.2013, 22:43; Ответить: DonC
Сообщение #6


Новичок
*

Группа: User
Сообщений: 24
Регистрация: 20.6.2012
Из: Крым
Поблагодарили: 8 раз
Репутация:   3  


Еще как вариант - использовать array_multisort (позволяет сортировать сразу по нескольким ключам)
В данном случае:
CODE
foreach ($arr as $key => $row) {
$sort[$key] = $row['c'];
}
array_multisort($sort, SORT_DESC, $arr);


Сообщение отредактировал DonC - 11.8.2013, 22:43


Поблагодарили: (1)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
mmkulikov
mmkulikov
сообщение 13.8.2013, 11:05; Ответить: mmkulikov
Сообщение #7


Старожил
******

Группа: Active User
Сообщений: 1783
Регистрация: 21.9.2012
Из: СССР
Поблагодарили: 514 раз
Репутация:   66  


andreykashops,
bool krsort ( array &$array [, int $sort_flags = SORT_REGULAR ] )
Сортирует массив по ключам в обратном порядке, сохраняя отношения между ключами и значениями.

Сообщение отредактировал mmkulikov - 13.8.2013, 11:06


--------------------
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
andreykashops
andreykashops
Topic Starter сообщение 13.8.2013, 20:03; Ответить: andreykashops
Сообщение #8


WordPress is my Life..
******

Группа: Active User
Сообщений: 1407
Регистрация: 21.7.2012
Из: Украины
Поблагодарили: 613 раз
Репутация:   135  


mmkulikov, я пробовал, но здесь только ключи первого уровня.


--------------------
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
x64
x64
сообщение 13.8.2013, 21:42; Ответить: x64
Сообщение #9


F.A.L.L.O.U.T.
*******

Группа: Super Moderator
Сообщений: 3158
Регистрация: 30.6.2011
Из: Железнодорожный (Балашиха)
Поблагодарили: 2527 раз
Репутация:   279  


(andreykashops @ 13.8.2013, 20:03) *
здесь только ключи первого уровня.

так что мешает использовать ключи 2 (3, 5, 10, ... уровней)?
if($a['c'] == $b['c']){
    if ($a['c']['a'] == $b['c']['a']) return 0;
    else returm $a['c']['a'] > $b['c']['a'] ? 1 : -1;
}


Сообщение отредактировал x64 - 13.8.2013, 21:43


--------------------


Поблагодарили: (1)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Pepper
Pepper
сообщение 13.8.2013, 21:46; Ответить: Pepper
Сообщение #10


Бывалый
****

Группа: User
Сообщений: 393
Регистрация: 14.1.2011
Поблагодарили: 123 раза
Репутация:   31  


x64, я думаю, он про krsort.


Поблагодарили: (2)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
2 страниц V   1 2 >
Открыть тему
Тема закрыта
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Нужна грамотная настройка PHP Mailer
4 by_roXe 430 26.1.2017, 18:33
автор: by_roXe
Открытая тема (нет новых ответов) Услуги в web-разработке и не только. PHP, JS, HTML, CSS, C++
6 L1ke777 1152 23.1.2017, 18:29
автор: jack
Открытая тема (нет новых ответов) php(yii2) developer, ищу постоянную удаленную работу
5 Kumidzeke 676 21.1.2017, 17:44
автор: eduarddis
Открытая тема (нет новых ответов) Тема имеет прикрепленные файлыКак с помощью php прописать путь к файлу
23 SOROKVLAD29 1660 14.1.2017, 18:13
автор: SOROKVLAD29
Открытая тема (нет новых ответов) Вывод серверной даты на php
7 GlazAlmaz 594 11.1.2017, 22:49
автор: GlazAlmaz


 



RSS Текстовая версия Сейчас: 25.2.2017, 13:03
Дизайн