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



 

Здравствуйте, гость (

| Вход | Регистрация )

Открыть тему
Тема закрыта
> Сортировка многомерного ассоциативного массива
T(h)rasher
T(h)rasher
Topic Starter сообщение 15.6.2014, 16:06; Ответить: T(h)rasher
Сообщение #1


Всем добрый вечер. Есть такой многомерный ассоциативный массив:





$arrn = Array(
'Microsoft' => array( 'products'=> 3, 'rating'=> 5, 'mark'=>3),
'IBM' => array( 'products'=> 2, 'rating'=> 3, 'mark'=>1),
'HP' => array( 'products'=>4, 'rating'=> 6, 'mark'=>1),
'Sony' => array( 'products'=> 5, 'rating'=> 2, 'mark'=>5)
);

Я пытаюсь отсортировать его по возрастанию значений элемента 'mark'. Т.е., чтобы получилось так:





'IBM' => array( 'products'=> 2, 'rating'=> 3, 'mark'=>1),
'HP' => array( 'products'=>4, 'rating'=> 6, 'mark'=>1),
'Microsoft' => array( 'products'=> 3, 'rating'=> 5, 'mark'=>3),
'Sony' => array( 'products'=> 5, 'rating'=> 2, 'mark'=>5)

Написал свою маленькую функцию сортировки и использую ее как параметр функции uasort():





function arrsort($x, $y)
{
if (isset($x['mark']) && isset($y['mark'])){

if ( $х['mark'] == $у['mark'] )
return 0;
else if ( $x['mark'] < $у['mark'] )
return -1;
else
return 1;
}
}

if (isset($x) && isset($y)){
uasort($arrn, "arrsort");
}

Но никакой сортировки в итоге почему-то не получается. В результате моего кода получается или такой массив:





'Microsoft' => array( 'products'=> 3, 'rating'=> 5, 'mark'=>3),
'IBM' => array( 'products'=> 2, 'rating'=> 3, 'mark'=>1),
'HP' => array( 'products'=>4, 'rating'=> 6, 'mark'=>1),
'Sony' => array( 'products'=> 5, 'rating'=> 2, 'mark'=>5)

или такой: 





'Sony' => array( 'products'=> 5, 'rating'=> 2, 'mark'=>5),
'IBM' => array( 'products'=> 2, 'rating'=> 3, 'mark'=>1),
'HP' => array( 'products'=>4, 'rating'=> 6, 'mark'=>1),
'Microsoft' => array( 'products'=> 3, 'rating'=> 5, 'mark'=>3)

Подскажите, что я делаю не так.

Сообщение отредактировал T(h)rasher - 15.6.2014, 18:05
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
sakhseo
sakhseo
сообщение 15.6.2014, 21:25; Ответить: sakhseo
Сообщение #2



function arrsort($x, $y){
if (isset($x['mark']) && isset($y['mark'])){
if ( $Х['mark'] == $У['mark'] )
return 0;
else if ( $x['mark'] < $У['mark'] )
return -1;
else
return 1;
}
}

Слетело то что я пытался выделить жирным и красным. Выделил прописными))))
В общем $x у тебя не везде $x))) Тоже самое с $y))))
Если поправить, то получается в итоге

Array(
[HP] => Array(
[products] => 4
[rating] => 6
[mark] => 1
)
[IBM] => Array(
[products] => 2
[rating] => 3
[mark] => 1
)
[Microsoft] => Array(
[products] => 3
[rating] => 5
[mark] => 3
)
[Sony] => Array(
[products] => 5
[rating] => 2
[mark] => 5
)
)



Сообщение отредактировал sakhseo - 15.6.2014, 21:33
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
T(h)rasher
T(h)rasher
Topic Starter сообщение 15.6.2014, 21:54; Ответить: T(h)rasher
Сообщение #3


Ого, спасибо огромное, заработало!) Мне не пришло в голову проверить имена сравниваемых массивов.


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


Свернуть

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

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Нужна помощь с DLE (сортировка новостей)
0 dimonsuper 3216 7.1.2015, 15:19
автор: dimonsuper
Открытая тема (нет новых ответов) Запись массива в БД (200 RUR)
3 pjotr 3492 7.2.2013, 15:41
автор: -A1ex-
Открытая тема (нет новых ответов) Из многомерного массива создать папки [СРОЧНО]
9 LifeUP 6215 20.8.2012, 20:05
автор: -HTMLandPHP-
Открытая тема (нет новых ответов) Сортировка
5 Tigor.v 8201 14.2.2011, 22:03
автор: -Tigor.v-


 



RSS Текстовая версия Сейчас: 18.4.2024, 14:32
Дизайн