![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| SneG0K |
|
||||
|
Max Mara ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1887 Регистрация: 1.12.2007 Где: Wis Dells Репутация: 7 Всего: 54 |
Есть массив.
Он правда уже в json'e, но все видно. То есть массив вложенных двумерных массивов. Нужно отсортировать весь массив, по параметру rate. Т.е. должно получится
Видел ф-цию array_multisort, но не понял, как с ней обращаться. |
||||
|
|||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 75 Всего: 260 |
тебе надо не array_multisort, а usort.
array_multisort надобна в том случае, если бы ты ты хотел переупорядочить не только пары id+rate, но и сами элементы id и rate между собой, что, очевидно, в твоем случае не надо. и еще уточню: у тебя разве в РНР-части "массив двумерных массивов"? судя по json'y было бы логичнее иметь массив объектов, не? |
|||
|
||||
| Simpliest |
|
||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 625 Регистрация: 1.9.2009 Репутация: 1 Всего: 3 |
Не понял мысли. Что мешает использовать array_multisort? http://php.net/array_multisort 3й пример. Добавлено через 4 минуты и 29 секунд
Ить... А ведь несколько неприятная штука оказалась. Как-то я раньше мимо этого проходил.
|
||||||
|
|||||||
| SneG0K |
|
|||
|
Max Mara ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1887 Регистрация: 1.12.2007 Где: Wis Dells Репутация: 7 Всего: 54 |
skyboy, не, массив массивов. Simpliest показал почему так происходит.
skyboy, эээ, я лучше мультисортом) |
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 75 Всего: 260 |
ничего не мешает, ты прав. просто лично мне кажется немного неожиданным - вычленять "колонки", чтоб сортировать по строкам. и не нравится мне, что логика сравнения, явно отличающаяся от простого "больше-меньше" привязывается к именам полей и их последовательности в порядке аргументов array_multisort. Понадобится добавить ещё поле и учитывать его в сравнении, переименуется поле ассоциативного массива(если имя поля дается на основании выборки из БД) и придется искать все сортировки и корректировать их. как по мне - лучше старый-добрый qsort с callback'ом. впрочем, это мое личное мнение и я согласен, что оно не имеет значения для решения вопроса. Добавлено @ 09:27
не, ну, я понимаю, что в отличие от РНР, в javascript не сушествует ассоциативных массивов. Я просто предположил насчет объектов. Мало ли. |
|||
|
||||
| Simpliest |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 625 Регистрация: 1.9.2009 Репутация: 1 Всего: 3 |
Согласен. это не слишком удобно. Но я в таких случаях сразу формирую массив правильной структуры. Да вот в том-то и дело.... Как-то получилось что я никогда не работал с JSON на получение его в PHP. И то, что эта ерунда допускает неоднозначность сериализации! Это было для меня неприятнейшей новостью. |
|||
|
||||
| skyboy |
|
||||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 75 Всего: 260 |
скорее - "десериализации" проверил. у меня код
выдает
Добавлено через 29 секунд думаю, неоднозначности не будет: всегда объекты будут транслироваться в объекты, а не в ассоциативные массивы |
||||
|
|||||
| Simpliest |
|
||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 625 Регистрация: 1.9.2009 Репутация: 1 Всего: 3 |
Да ну? Т.е. на вход ты подал объекты?
В том весь и фокус, что я, например, подам массив из массива и объекта. А вернет оно мне при десериализации массив состоящий или из ДВУХ! массивов или ДВУХ! объектов. На кой черт такой цирк?
Меня это малость не радует, поскольку я люблю массивы в PHP - очень мощная вещь. Хотя я уже перехожу на ArrayObject и для обратной совместимости их более чем достаточно... но тем не менее - неприятно. |
||||||
|
|||||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 75 Всего: 260 |
я не про исходный массив в РНР. на стороне javascript это ж уже объекты были, верно? если учесть, что json не предполагает указание метаинформации(класс объекта, тип массива, ссылки) и что ассоциативных массивов в javascript нету, то ничего удивительного нет, верно? и претензий к авторам РНР быть не может. хотя понимаю твое..кхм..возмущение |
|||
|
||||
| SneG0K |
|
|||
|
Max Mara ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1887 Регистрация: 1.12.2007 Где: Wis Dells Репутация: 7 Всего: 54 |
Так-с, array_multisort выглядит как-то не так для этого. Помогите разобраться с usort'om
Вот на простом примере, вроде моего. Как это работает? Ни как не пойму зачем нужна обратная ф-ция |
|||
|
||||
| Simpliest |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 625 Регистрация: 1.9.2009 Репутация: 1 Всего: 3 |
Она как раз и сравнивает. Она получает два элемента.
В ней в твоем случае ты получишь 1й и 2й подмассив достаточно будет написать
|
|||
|
||||
![]()
|
| Правила форума "PHP" | |
|
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |