simple
Новичок
Сортировка многомерного массива.
Всем привет, как написать callback функцию для usort() чтобы она при сортировки одинаковых значений сохраняла бы их упорядочность.
функция типа
не помогает, в инете пишут про usort() и пользовательскую сортировку следующее:
Замечание: Если два элемента исходного массива равны, их порядок в отсортированном массиве неопределён. До PHP 4.0.6 пользовательские функции сохраняли для таких элеменов порядок в оригинальном массиве, но новый алгоритм сортировки, появившейся в версии 4.1.0 больше не использует это решение и не имеет другого эффективного.
Неужели ничего нельзя сделать?
Написал свою функцию, которая сортирует одинаковые значения массива поупорядочности которая была до сортировки, все работает как часы, но очень медленно( массив из 5000 записей сортирует 20 сек), вероятно из-за вложенных циклов for...
подскажите кто знает как эту проблему рещить?
Всем привет, как написать 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;
}
Замечание: Если два элемента исходного массива равны, их порядок в отсортированном массиве неопределён. До 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].' '.$

PHP:
1
PHP:
[php]