![]() |
сортировка чисел
hi!
Скажите, как отсортировать числа в таком порядке: Код:
1 Код:
1 |
Цитата:
|
Igor_I что PHP?
|
А где sort()?
|
Есть файл:
Код:
asd.txt PHP код:
Код:
1 |
slaine
Там же есть ещё один параметер, попробуй поставить SORT_NUMERIC |
и ещё можно попробывать natsort или usort
или в окнце в концов самому функцию написать: самые лучшие сортировки-это merge_sort и quick_sort Я люблю больше merge_sort |
vadimiron хе-хе..... сенкс!
А merge_sort и quick_sort я не нашёл на ru.php.net natsort-ом я не поня, как пользоваться. А, как интересно написать самому?, я вчера весь вечер сидел, но такую муру зделала, аш противно. |
Да-да, внимательно относимся к типам данных и тому, что php может творить с ними почти что угодно :). file возвращает массив строк, sort сортирует исходя из этого именно строки (без указания флагов уточнения сортировки) со всеми вытекающими последствиями.
|
Цитата:
для начала можно попробовать сортировку методом пузырьков.. по это не самый оптимальный алгоритм, сортировки, вот у нас девченка диплом по методам сортировки писала... с анализом скорости алгоритма, эффективности... и так далее... :) |
PHP код:
Цитата:
|
Никакой загадки. natsort сохраняет ассоциации индексов. Поглядите функцией var_dump на $file до и после применения natsort. Ясный день, что первый цикл будет идти после сортировки по массиву непоследовательно.
|
До сортировки
print_r (array_slice ($file,0)) - Array ( [0] => 2 [1] => 4 [2] => 5 [3] => 1 [4] => 6 [5] => 10 [6] => 3 [7] => 9 [8] => 8 [9] => 7 ) var_dump ($file) = array(10) { [0]=> string(3) "2 " [1]=> string(3) "4 " [2]=> string(3) "5 " [3]=> string(3) "1 " [4]=> string(3) "6 " [5]=> string(4) "10 " [6]=> string(3) "3 " [7]=> string(3) "9 " [8]=> string(3) "8 " [9]=> string(1) "7" } После сортировки print_r (array_slice ($file,0)) - Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 [5] => 6 [6] => 7 [7] => 8 [8] => 9 [9] => 10 ) var_dump ($file) = array(10) { [3]=> string(3) "1 " [0]=> string(3) "2 " [6]=> string(3) "3 " [1]=> string(3) "4 " [2]=> string(3) "5 " [4]=> string(3) "6 " [9]=> string(1) "7" [8]=> string(3) "8 " [7]=> string(3) "9 " [5]=> string(4) "10 " } ===================================== Теперь понятно. |
Время: 06:20. |
Время: 06:20.
© OSzone.net 2001-