Сортировка многомерного массива.

simple

Новичок
Сортировка многомерного массива.

Всем привет, как написать callback функцию для usort() чтобы она при сортировки одинаковых значений сохраняла бы их упорядочность.
функция типа
PHP:
function a_sort($a,$b){ 
if ($a[0] > $b[0])
 return 1;
 else if ($a[0] < $b[0])
 return -1;
 else return 0;
}
не помогает, в инете пишут про usort() и пользовательскую сортировку следующее:

Замечание: Если два элемента исходного массива равны, их порядок в отсортированном массиве неопределён. До PHP 4.0.6 пользовательские функции сохраняли для таких элеменов порядок в оригинальном массиве, но новый алгоритм сортировки, появившейся в версии 4.1.0 больше не использует это решение и не имеет другого эффективного.

Неужели ничего нельзя сделать?

Написал свою функцию, которая сортирует одинаковые значения массива поупорядочности которая была до сортировки, все работает как часы, но очень медленно( массив из 5000 записей сортирует 20 сек), вероятно из-за вложенных циклов for...

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);
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].' '.$
подскажите кто знает как эту проблему рещить? :confused:
PHP:
1
PHP:
[php]
 

Dovg

Продвинутый новичок
А зачем тебе сохранять порядок следования _одинаковых_ значений? они же одинаковые?
 
Сверху