Доброго времени суток. Есть такая проблемка: сортирую многомерный массив - sort($array,SORT_STRING) и если массив уже отсортирован, то функция "sort" сортирует его в обратном порядке. В чем прикол? Хотя в мануале везде пишут, что "Простейшая функция sort() сортирует элементы массива по возрастанию (от меньших к большим)."
массив вида: Array ( [0] => Array ( [login] => aaa [ip] => 192.168.0.10 [name] => Иванов Иван Иванович ) [1] => Array ( [login] => bbb [ip] => 192.168.0.68 [name] => Петров Петр ) [2] => Array ( [login] => ccc [ip] => 192.168.0.11 [name] => Пупкин Вася ) ) А как его еще сортировать по логину?
я это уже читал... видимо так и придеться сделать... одно не понятно - почему так работает sort()!!! всем спасибо!!!
У тебя элементы массива, в данном случае, другие массивы. И sort по всей видимости приводит его к строковому типу.
я бы согласился, если бы sort() сортировала не понять как... она сортирует правильно по логину, только первый раз по возростанию, второй по убыванию... и так чередуется... вот это не понятно...
Я ж тебя сразу спросил В итоге у тебя все значения в массиве становятся равными строке "Array" Примерно так у тебя работает сортировка PHP: <? function mysort(&$arr){ for ($i=0; $i<count($arr)-1; $i++){ $min = $i; for ($j=$i+1; $j<count($arr); $j++){ if ( (string)$arr[$min] >= (string)$arr[$j]){ $min =$j; } } $x = $arr[$i]; $arr[$i] = $arr[$min]; $arr[$min] = $x; } } ?> Вот еще пример для закрепления, что нужно правильно выбирать типы сортировки PHP: <? $a = $b = array( '01', '00001', '001', '000001', ); sort($a, SORT_STRING); print_r($a); sort($a, SORT_STRING); print_r($a); sort($a, SORT_STRING); print_r($a); print '------------------------------------'; sort($b, SORT_NUMERIC); print_r($b); sort($b, SORT_NUMERIC); print_r($b); sort($b, SORT_NUMERIC); print_r($b); ?>