Strict Standards: Resource ID#18 used as offset, casting to integer (18) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401

Strict Standards: Resource ID#23 used as offset, casting to integer (23) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401

Strict Standards: Resource ID#25 used as offset, casting to integer (25) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401

Strict Standards: Resource ID#26 used as offset, casting to integer (26) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401
ТвойWeb :: PHP - Сортировка ассоциативного массива по двум полям
ТвойWeb ТвойWeb
Качественный Европейский хостинг
Форум для чайников
 Чат на форуме      Помощь      Поиск      Пользователи


 Страниц (1): [1]   

> Описание: трабл
Иб-Тать
Отправлено: 09 Апреля, 2005 - 23:00:43
Post Id



Junior Member


Покинул форум
Сообщений всего: 54
Дата рег-ции: Апр. 2005  

Карма 0




Ситуация такова:
Имеем двумерный ассоциативный массив вида
"time", "name", "message"
каким образом его можно упорядочить по полям "name", и "time", т.е. при равных полях
"name" сортировка идет по "time"
Мозги уже вскипают, а сортирует как-то глючно....
а по одному полю - uasort - без вопросов. Огорчение
 
 Top
TvoyWeb Администратор
Отправлено: 10 Апреля, 2005 - 06:56:07
Post Id



Главный здесь


Покинул форум
Сообщений всего: 7072
Дата рег-ции: Нояб. 2003  
Откуда: Tashkent Uz

Карма 52




Иб-Тать
А в значениях что? Число или строка?
 
 Top
Иб-Тать
Отправлено: 10 Апреля, 2005 - 07:31:01
Post Id



Junior Member


Покинул форум
Сообщений всего: 54
Дата рег-ции: Апр. 2005  

Карма 0




массив вида
---- time----- name----- msg
[0] 563546547 Степан Хай!
[1] 564546654 Петр дайте пива
и т.д.

т.е. грубо говоря, массив из записей, где Name - строка, time - таймстамп юниксовский (число).

пробовал через uasort($allmessages,'special_sort'Подмигивание; с такой вот функцией сравнения:
CODE:
function special_sort($a, $b) {
if (strcmp($a['name'],$b['name'])) {return -1;}
else {return ($b['time']-$a['time']);} }

выходит фигня абсолютная полная. Предварительно упорядочил по имени - все равно получается хаос в итоге.
Еще одно любопытное замечание:
В подобном массиве я не могу сделать например так:
CODE:
$hlam=$allmessages[3];$allmessages[2]=$allmessages[3];$allmessages[3]=$hlam;

то есть поменять местами два элемента. Делать-то делаю, а не меняются Однако
 
 Top
TvoyWeb Администратор
Отправлено: 10 Апреля, 2005 - 09:38:44
Post Id



Главный здесь


Покинул форум
Сообщений всего: 7072
Дата рег-ции: Нояб. 2003  
Откуда: Tashkent Uz

Карма 52




Попробуй так:
CODE:
$array = array(
"1108758391::Петя::Xnj nj",
"1070066133::Сергей::yhnbvgt",
"1082978322::Yra::asdfghj",
"1090507117::Nikolas::ewtdhhnjnvcm",
"1108758214::Петя::p[qowelkas",
"1107272610::Ivan::,./m,dl",
"1102860632::Yra::asdfghj",
"1105343484::Сергей::yhnbvgt",
"1107272610::Nikolas::ewtdhhnjnvcm",
"1102611181::Сергей::yhnbvgt",
"1105343484::Yra::asdfghj",
"1110460554::Петя::hdgf");

for($i=0;$i<sizeof($array);$i++){
$newarray[$i] = explode("::",$array[$i]);
}
function cmp($a, $b)
{
$return = strcmp($a[1], $b[1]);
if ($return == 0){
if ($a[0] == $b[0]) {
return 0;
}
return ($a[0] > $b[0]) ? -1 : 1;
} else {
return $return;
}

}
uasort($newarray, "cmp");
echo "<pre>";
print_r($newarray);
echo "</pre>";

И будет лучше если будешь заключать код в теги форума.
 
 Top
ETC Администратор
Отправлено: 10 Апреля, 2005 - 11:08:31
Post Id



Flash-coder


Покинул форум
Сообщений всего: 5275
Дата рег-ции: Дек. 2003  
Откуда: TimeZero

Карма 26




Во, я такой же фигнёй страдал, написал нечто близкое, что написал TvoyWeb

Хм, вместо sizeof можно count, хотя непринципиально... Я вообще чаще list использую Улыбка
 
 Top
Иб-Тать
Отправлено: 10 Апреля, 2005 - 11:22:25
Post Id



Junior Member


Покинул форум
Сообщений всего: 54
Дата рег-ции: Апр. 2005  

Карма 0




ETC

Первая часть - вообще не принципиальна, у меня функция сравнения глючная была

TvoyWeb
Во блин, у мя ж по логике - то же самое, а не работает.
Пасиба, а я дурачина видать....
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0, скрытых: 0)
« PHP/Perl »


Все гости форума могут просматривать этот раздел.
Только администраторы и модераторы могут создавать новые темы в этом разделе.
Только администраторы и модераторы могут отвечать на сообщения в этом разделе.
 



Форум на AlfaSpace.NET


Powered by ExBB
ExBB FM 1.0 RC1 by TvoyWeb.ru
InvisionExBB Style converted by Markus®

[Script Execution time: 0.0414]     [ Gzipped ]



Notice: ob_end_flush(): failed to send buffer of ob_gzhandler (1) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/page_tail.php on line 33