У меня проблема с обработкой более длинных массивов PHP через функцию usort(). Я хочу отсортировать массив с 40-50 элементами типа «1.1», «2.3», «1.1.2», «3.1», 30, «3.10» ... Если я исхожу всего несколькими элементами, все работает хорошо. Но если у меня есть массив из 40 элементов, функция просто слишком медленно - так медленно, что даже перекрывает таймаут 90 сек ...PHP - функция usort слишком медленная
Мой код:
function mySort($a,$b) {
$a_arr = explode(".",$a);
$b_arr = explode(".",$b);
if ($a_arr[0] < $b_arr[0]) {return -1;break;}
if ($a_arr[0] > $b_arr[0]) {return 1;break;}
for($i=0;$a_arr[$i]==$b_arr[$i];$i++){
if ($a_arr[$i+1] < $b_arr[$i+1]) {return -1;break;}
if ($a_arr[$i+1] > $b_arr[$i+1]) {return 1;break;}
}
}
$sort_array = array("1.1","2.3","1.1.2","3.1","30","3.10"); //example, I take this data from the database
usort($sort_array,"mySort");
... Может кто-нибудь Помоги пожалуйста? Можно ли это решить? Любая помощь будет принята с благодарностью.
Заранее спасибо.
именно то, что вы имеете 'break' в там? код уже будет иметь 'return'ed, и перерывы никогда не могут быть выполнены. –
Что такое цикл 'for'? Я не понимаю ... не мог бы вы объяснить, что должен сделать ваш алгоритм сортировки? Поделитесь желаемым выходом. – elclanrs
Не использовал бы version_compare() более эффективный, чтобы этот разбивка на подмассивы –