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

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

Strict Standards: Resource ID#37 used as offset, casting to integer (37) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401
ТвойWeb :: Версия для печати :: Сортировка многомерного массива
ТвойWeb » WebMaster класс » PHP/Perl » Сортировка многомерного массива

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

1. SviMik - 27 Ноября, 2005 - 16:37:57 - перейти к сообщению
Имеется массив такого вида:
CODE:
$allfiles=array();
$allfiles[0]=array(1024,a.txt);
$allfiles[1]=array(512,b.txt);
$allfiles[2]=array(2048,c.txt);
........
$allfiles[xxx]=array(64,blablabla.txt);

Нужно отсортировать массив $allfiles по первому параметру вложенного массива. Т.е. получить
CODE:

$allfiles[0]=array(64,blablabla.txt);
$allfiles[1]=array(512,b.txt);
$allfiles[2]=array(1024,a.txt);
$allfiles[3]=array(2048,c.txt);
.......
$allfiles[xxx]=array(8192000,123.mp3);

Посоветовали array_multisort, пялюсь на хелп в php.net на описание этой функции, и не знаю, что с ней делать Огорчение
В первый раз с таким массивом столкнулся, а по-другому вроде никак.
2. ETC - 27 Ноября, 2005 - 17:59:44 - перейти к сообщению
3. SviMik - 28 Ноября, 2005 - 11:43:59 - перейти к сообщению
Ну не получается и всё тут Недовольство, огорчение
4. ETC - 29 Ноября, 2005 - 05:03:04 - перейти к сообщению
SviMik
Блн, там нужно задать пользовательскую функцию сортировки, которая будет сравнивать два элемента массива и проверяя по какому-либо значению возвращать -1, 0 или 1 для сортировки. Я тебе специально не пишу, как нужно делать, попробуй разобраться самостоятельно — будешь лучше знать. Если же не получится — напишу.
5. SviMik - 29 Ноября, 2005 - 13:49:57 - перейти к сообщению
Вот прикол, в отдельном скрипте пашет, а если в свой вставляю - нет.
Дальше - более загочней. Методом исключения доисключался до
CODE:
qwerty();
function qwerty() {
echo('1111111111111111');
}

Если его вставить до функции
CODE:

$num=0;
while($allfiles[$num]){
<<<<blablabla>>>
$num++;
}

или в любое место внутри неё, то скрипт просто останавливается, когда до этой функции доходит. Мистика какая-то. После этого цикла вставляю - всё пашет, и дальнейшие функции тоже выполняются.
6. SviMik - 29 Ноября, 2005 - 13:56:18 - перейти к сообщению
Урааааа! Допёрло! У меня же всё это в условии стоит. Т.е.
CODE:

if(чего-нидь){

qwerty();
function qwerty() {
echo('1111111111111111');
}

}

Такая конструкция почёму-то не пашет. В этом-то и была вся загвоздка с самого начала.
Ура!Пляшу от радости
7. SviMik - 29 Ноября, 2005 - 14:06:19 - перейти к сообщению
Хм, на первый взгляд сортирует. Стал внимательно разглядывать - что-то не то. Не по-человечески как-то.
Цитата:

1.htm
1.php
2.php
Bild2901.jpg
Clipboard01.png
Fozzy
Image0929-1257(TV20)[1].jpg
SBSP_29.09.2005_15.15.mp3
Thumbs.db
ad
apache2triad.ico
apache_2.0.54-win32-x86-no_ssl.rar
c.bak
cgi-bin
close.gif
close2.gif
<...>
8. ETC - 29 Ноября, 2005 - 15:42:01 - перейти к сообщению
Значит пользовательская функция написана неверно.
9. Леголегс - 29 Ноября, 2005 - 15:54:54 - перейти к сообщению
SviMik
У тебя функция сравнения строк чувствительна к регистру. S > s, а тебе видимо надо такую функцию, чтоб для неё S == s
10. SviMik - 29 Ноября, 2005 - 16:02:15 - перейти к сообщению
Всё, разобрался. Всё прекрасно пашет.
ETC Спасибо!
ЗЫ. А в мирке до тебя часто не достучатся, вот и тута спросил. Подмигивание

Форум на AlfaSpace.NET


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

[Script Execution time: 0.0404]     [ 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