За последние 24 часа нас посетили 52090 программистов и 1763 робота. Сейчас ищет 951 программист ...

Упорядочить массив по порядку

Тема в разделе "PHP для новичков", создана пользователем Econaft, 6 авг 2017.

  1. Econaft

    Econaft Активный пользователь

    С нами с:
    28 июн 2014
    Сообщения:
    89
    Симпатии:
    1
    Есть перебор файлов директории:
    Код (Text):
    1. if ($handle = opendir('./papka')) {  
    2.     while (false !== ($file = readdir($handle))) {
    3.         if ($file != "." && $file != "..") {
    4.             $files[] = $file;  }   }
    5.     closedir($handle);  }
    При выводе массива:
    Код (Text):
    1. print_r($files);
    Выдаёт это:
    Код (Text):
    1.  
    2. Array
    3. (
    4.     [0] => 1.htm
    5.     [1] => 10.htm
    6.     [2] => 11.htm
    7.     [3] => 12.htm
    8.     [4] => 13.htm
    9.     [5] => 14.htm
    10.     [6] => 15.htm
    11.     [7] => 16.htm
    12.     [8] => 17.htm
    13.     [9] => 18.htm
    14.     [10] => 19.htm
    15.     [11] => 2.htm
    16.     [12] => 20.htm
    17.     [13] => 21.htm
    18.     [14] => 22.htm
    19.     [15] => 23.htm
    20.     [16] => 24.htm
    21.     [17] => 25.htm
    22.     [18] => 26.htm
    23.     [19] => 27.htm
    24.     [20] => 28.htm
    25.     [21] => 29.htm
    26.     [22] => 3.htm
    27. )
    Т.е. после 1 следует 10.
    После 19 следует 2.
    Как упорядочить, чтобы был обычный порядок?
    После 1 следовало 2, а не 10?
     
  2. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    Применить натуральную сортировку
     
  3. Econaft

    Econaft Активный пользователь

    С нами с:
    28 июн 2014
    Сообщения:
    89
    Симпатии:
    1
    Пробовал приментить что-то вроде этого:
    Код (Text):
    1. $files =  sort($files);
    но не получается.
     
  4. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    В целом неплохо, но флаги-то, флаги.
     
  5. Econaft

    Econaft Активный пользователь

    С нами с:
    28 июн 2014
    Сообщения:
    89
    Симпатии:
    1
    А как с флагами сделать?
     
  6. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    В мануале должно быть написано. Это слишком просто, чтоб гуру давал готовое решение новичку. Серьёзно.
     
  7. alexblack

    alexblack Старожил

    С нами с:
    20 янв 2016
    Сообщения:
    640
    Симпатии:
    381
    Ganzal нравится это.
  8. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    @alexblack ты чутка опережаешь план обучения :(
     
  9. alexblack

    alexblack Старожил

    С нами с:
    20 янв 2016
    Сообщения:
    640
    Симпатии:
    381
    Все,не мешаю :)
     
  10. Econaft

    Econaft Активный пользователь

    С нами с:
    28 июн 2014
    Сообщения:
    89
    Симпатии:
    1
    Массив у меня тут: $files

    Почему не работает:
    $files = sort($files);
     
  11. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    Потому что внимательно нужно мануал прочитать. У тебя тут две проблемы, которые ты не видишь, потому что мануал не читал. 1) как верно заметил другой оратор - функция не возвращает сортированный массив, а работает с ним по ссылке. И 2) в мануале же описаны флаги, с которыми можно функцию вызвать и получить сортировку в том порядке, в котором ты изначально желаешь. Ты почти два часа сидишь на форуме вместо того чтоб зайти в мануал. Ну ок, за 300 рублей я тебе дам готовый код.