Всем привет. Такая проблема, как отсортировать массив чтобы он сохранил всю последовательность элементов, какая было до сортировки. например файл: 1;2;0 4;5;0 8;3;0 7;6;0 3;2;0 вытаскиваем все это в массив сортируем с usort('пользовательская функия') по первым элементам, сортировка выходит, но нарушается связь последовательности какой они попадали в файл, т.е например если встречается два одинаковых превых эдементов то нужно чтобы тот элемент который попал в файл раньше был выше который попал в файл позже, вобщем примерно так, подскажите в каком направлении двигаться?
Нифига не понятно, но возможно тебе поможет моя функция http://www.php.ru/forum/viewtopic.php?p=235784#235784 в ней порядок одинаковых элементов не должен нарушатсья (хотя какая разница, если они ОДИНАКОВЫЕ? o_0)
Разные значения элементов сортируются правильно, по возрастанию или убыванию, а вот одинаковые по значению элементы нарушают тут связь по которой первоначально попали в файл, например первая запись файла, при наличии таких же одинаковых записей,в отсортированном массиве по своему значению будет например где нибудь по середине или даже в конце, хотя по идеи должна быть выше тех записей которые попали в файл позже.
нет не разобрался, вообщем написал следующее PHP: $a[0] = array(12565,0,1); $a[1] = array(12477,0,2); $a[2] = array(12843,0,3); $a[3] = array(12565,0,4); $a[4] = array(12305,0,5); $a[5] = array(12565,0,6); $a[6] = array(12305,0,7); $a[7] = array(12305,0,8); $a[8] = array(12565,0,9); $a[9] = array(12565,0,10); $a[10] = array(12477,0,11); $a[11] = array(12843,0,12); //......................................... $a[5000]=array(12567,0,5001); array_revers($a); for($i=0;$i<sizeof($a);$i++){ for($j=$i;$j<sizeof($a);$j++){ if($a[$i][0]>=$a[$j][0]){ $b[0]=$a[0+$i][0]; $b[1]=$a[0+$i][1]; $b[2]=$a[0+$i][2]; $a[0+$i][0]=$a[$j][0]; $a[0+$i][1]=$a[$j][1]; $a[0+$i][2]=$a[$j][2]; $a[$j][0]=$b[0]; $a[$j][1]=$b[1]; $a[$j][2]=$b[2];}}} for($i=0;$i<sizeof($a);$i++){ echo $a[$i][0].' '.$a[$i][1].' '.$a[$i][2]."<br>"; } код работает как мне надо, сортирует одинаковые значения если они есть строго как они были упорядочены до сортировки, но очень медленно, 5000 записей сортирует 20 секунд, вероятно это из-за вложенных циклов for...как улучшить этот код?