Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
14 / 14 / 5
Регистрация: 03.09.2013
Сообщений: 159
1

Отсортировать многоуровневый массив (Рекурсия)

08.09.2016, 14:31. Показов 673. Ответов 4
Метки нет (Все метки)

Есть массив
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
array(9) {
  ["/var/www/wps202/data/www/plus78.wps.qh0.ru/assets/files/1448881894_cute-kitty-360x640.jpg"]=>
  string(89) "/var/www/wps202/data/www/plus78.wps.qh0.ru/assets/files/1448881894_cute-kitty-360x640.jpg"
  ["/var/www/wps202/data/www/plus78.wps.qh0.ru/assets/files/AAA"]=>
  string(59) "/var/www/wps202/data/www/plus78.wps.qh0.ru/assets/files/AAA"
  ["/var/www/wps202/data/www/plus78.wps.qh0.ru/assets/files/Test_Gr"]=>
  array(4) {
    ["/var/www/wps202/data/www/plus78.wps.qh0.ru/assets/files/Test_Gr/11111"]=>
    array(1) {
      ["/var/www/wps202/data/www/plus78.wps.qh0.ru/assets/files/Test_Gr/11111/154.jpg"]=>
      string(77) "/var/www/wps202/data/www/plus78.wps.qh0.ru/assets/files/Test_Gr/11111/154.jpg"
    }
    ["/var/www/wps202/data/www/plus78.wps.qh0.ru/assets/files/Test_Gr/2"]=>
    string(65) "/var/www/wps202/data/www/plus78.wps.qh0.ru/assets/files/Test_Gr/2"
    ["/var/www/wps202/data/www/plus78.wps.qh0.ru/assets/files/Test_Gr/3"]=>
    string(65) "/var/www/wps202/data/www/plus78.wps.qh0.ru/assets/files/Test_Gr/3"
    ["/var/www/wps202/data/www/plus78.wps.qh0.ru/assets/files/Test_Gr/files"]=>
    string(69) "/var/www/wps202/data/www/plus78.wps.qh0.ru/assets/files/Test_Gr/files"
  }
  ["/var/www/wps202/data/www/plus78.wps.qh0.ru/assets/files/g.txt"]=>
  string(61) "/var/www/wps202/data/www/plus78.wps.qh0.ru/assets/files/g.txt"
  ["/var/www/wps202/data/www/plus78.wps.qh0.ru/assets/files/img.jpg"]=>
  string(63) "/var/www/wps202/data/www/plus78.wps.qh0.ru/assets/files/img.jpg"
  ["/var/www/wps202/data/www/plus78.wps.qh0.ru/assets/files/p.txt"]=>
  string(61) "/var/www/wps202/data/www/plus78.wps.qh0.ru/assets/files/p.txt"
  ["/var/www/wps202/data/www/plus78.wps.qh0.ru/assets/files/test.ppt"]=>
  string(64) "/var/www/wps202/data/www/plus78.wps.qh0.ru/assets/files/test.ppt"
  ["/var/www/wps202/data/www/plus78.wps.qh0.ru/assets/files/test1"]=>
  array(4) {
    ["/var/www/wps202/data/www/plus78.wps.qh0.ru/assets/files/test1/1452736497_yumor12.jpg"]=>
    string(84) "/var/www/wps202/data/www/plus78.wps.qh0.ru/assets/files/test1/1452736497_yumor12.jpg"
    ["/var/www/wps202/data/www/plus78.wps.qh0.ru/assets/files/test1/Test2"]=>
    string(67) "/var/www/wps202/data/www/plus78.wps.qh0.ru/assets/files/test1/Test2"
    ["/var/www/wps202/data/www/plus78.wps.qh0.ru/assets/files/test1/files"]=>
    array(10) {
      ["/var/www/wps202/data/www/plus78.wps.qh0.ru/assets/files/test1/files/intest"]=>
      array(1) {
        ["/var/www/wps202/data/www/plus78.wps.qh0.ru/assets/files/test1/files/intest/test.txt"]=>
        string(83) "/var/www/wps202/data/www/plus78.wps.qh0.ru/assets/files/test1/files/intest/test.txt"
      }
      ["/var/www/wps202/data/www/plus78.wps.qh0.ru/assets/files/test1/files/test.doc"]=>
      string(76) "/var/www/wps202/data/www/plus78.wps.qh0.ru/assets/files/test1/files/test.doc"
      ["/var/www/wps202/data/www/plus78.wps.qh0.ru/assets/files/test1/files/test.pdf"]=>
      string(76) "/var/www/wps202/data/www/plus78.wps.qh0.ru/assets/files/test1/files/test.pdf"
      ["/var/www/wps202/data/www/plus78.wps.qh0.ru/assets/files/test1/files/test.ppt"]=>
      string(76) "/var/www/wps202/data/www/plus78.wps.qh0.ru/assets/files/test1/files/test.ppt"
      ["/var/www/wps202/data/www/plus78.wps.qh0.ru/assets/files/test1/files/test.pptx"]=>
      string(77) "/var/www/wps202/data/www/plus78.wps.qh0.ru/assets/files/test1/files/test.pptx"
      ["/var/www/wps202/data/www/plus78.wps.qh0.ru/assets/files/test1/files/test.rar"]=>
      string(76) "/var/www/wps202/data/www/plus78.wps.qh0.ru/assets/files/test1/files/test.rar"
      ["/var/www/wps202/data/www/plus78.wps.qh0.ru/assets/files/test1/files/test.txt"]=>
      string(76) "/var/www/wps202/data/www/plus78.wps.qh0.ru/assets/files/test1/files/test.txt"
      ["/var/www/wps202/data/www/plus78.wps.qh0.ru/assets/files/test1/files/test.xls"]=>
      string(76) "/var/www/wps202/data/www/plus78.wps.qh0.ru/assets/files/test1/files/test.xls"
      ["/var/www/wps202/data/www/plus78.wps.qh0.ru/assets/files/test1/files/test.xlsx"]=>
      string(77) "/var/www/wps202/data/www/plus78.wps.qh0.ru/assets/files/test1/files/test.xlsx"
      ["/var/www/wps202/data/www/plus78.wps.qh0.ru/assets/files/test1/files/test.zip"]=>
      string(76) "/var/www/wps202/data/www/plus78.wps.qh0.ru/assets/files/test1/files/test.zip"
    }
    ["/var/www/wps202/data/www/plus78.wps.qh0.ru/assets/files/test1/test_gr"]=>
    array(1) {
      ["/var/www/wps202/data/www/plus78.wps.qh0.ru/assets/files/test1/test_gr/test22"]=>
      array(2) {
        ["/var/www/wps202/data/www/plus78.wps.qh0.ru/assets/files/test1/test_gr/test22/greencity1.jpg"]=>
        string(91) "/var/www/wps202/data/www/plus78.wps.qh0.ru/assets/files/test1/test_gr/test22/greencity1.jpg"
        ["/var/www/wps202/data/www/plus78.wps.qh0.ru/assets/files/test1/test_gr/test22/map.jpg"]=>
        string(84) "/var/www/wps202/data/www/plus78.wps.qh0.ru/assets/files/test1/test_gr/test22/map.jpg"
      }
    }
  }
  ["/var/www/wps202/data/www/plus78.wps.qh0.ru/assets/files/папка"]=>
  array(2) {
    ["/var/www/wps202/data/www/plus78.wps.qh0.ru/assets/files/папка/Main"]=>
    string(71) "/var/www/wps202/data/www/plus78.wps.qh0.ru/assets/files/папка/Main"
    ["/var/www/wps202/data/www/plus78.wps.qh0.ru/assets/files/папка/text.txt"]=>
    string(75) "/var/www/wps202/data/www/plus78.wps.qh0.ru/assets/files/папка/text.txt"
  }
}
Нужно отсортировать его таким образом что бы все файлы, то есть у кого есть расширение .* находились внизу, а все папки наверху, при этом все папки и файлы оставить в таком же алфавитном порядке как и сейчас, как это реализовать ? мозг уже кипит не могу додуматься (
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.09.2016, 14:31
Ответы с готовыми решениями:

Как сделать многоуровневый массив
Есть таблица SQuizQuestion, в которой содержаться данные о вопросах, со следующими полями: *...

Отсортировать массив по убыванию, затем добавить недостающий элемент и отсортировать массив по возрастанию
2) В массиве a ...a встречаются по одному разу все целые числа от 0 до n, кроме одного. За n...

Нужно из обычного массива изменить на многоуровневый массив данных
function get_correct_answers($test){ if(!$test) return false; global $db; $query="SELECT...

Отсортировать массивы, объединить и результирующий массив отсортировать
Помогите пожалуйста, нужно написать в паскале программу: Даны массив А(16), В(10).Отсортировать...

4
2139 / 1631 / 831
Регистрация: 10.01.2015
Сообщений: 5,144
08.09.2016, 14:45 2
Выложите массив в виде массива, а не дампа.
0
14 / 14 / 5
Регистрация: 03.09.2013
Сообщений: 159
08.09.2016, 14:51  [ТС] 3
Пифагор,
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
Array
(
    [/var/www/wps202/data/www/plus78.wps.qh0.ru/assets/files/1448881894_cute-kitty-360x640.jpg] => /var/www/wps202/data/www/plus78.wps.qh0.ru/assets/files/1448881894_cute-kitty-360x640.jpg
    [/var/www/wps202/data/www/plus78.wps.qh0.ru/assets/files/AAA] => /var/www/wps202/data/www/plus78.wps.qh0.ru/assets/files/AAA
    [/var/www/wps202/data/www/plus78.wps.qh0.ru/assets/files/Test_Gr] => Array
        (
            [/var/www/wps202/data/www/plus78.wps.qh0.ru/assets/files/Test_Gr/11111] => Array
                (
                    [/var/www/wps202/data/www/plus78.wps.qh0.ru/assets/files/Test_Gr/11111/154.jpg] => /var/www/wps202/data/www/plus78.wps.qh0.ru/assets/files/Test_Gr/11111/154.jpg
                )
 
            [/var/www/wps202/data/www/plus78.wps.qh0.ru/assets/files/Test_Gr/2] => /var/www/wps202/data/www/plus78.wps.qh0.ru/assets/files/Test_Gr/2
            [/var/www/wps202/data/www/plus78.wps.qh0.ru/assets/files/Test_Gr/3] => /var/www/wps202/data/www/plus78.wps.qh0.ru/assets/files/Test_Gr/3
            [/var/www/wps202/data/www/plus78.wps.qh0.ru/assets/files/Test_Gr/files] => /var/www/wps202/data/www/plus78.wps.qh0.ru/assets/files/Test_Gr/files
        )
 
    [/var/www/wps202/data/www/plus78.wps.qh0.ru/assets/files/g.txt] => /var/www/wps202/data/www/plus78.wps.qh0.ru/assets/files/g.txt
    [/var/www/wps202/data/www/plus78.wps.qh0.ru/assets/files/img.jpg] => /var/www/wps202/data/www/plus78.wps.qh0.ru/assets/files/img.jpg
    [/var/www/wps202/data/www/plus78.wps.qh0.ru/assets/files/p.txt] => /var/www/wps202/data/www/plus78.wps.qh0.ru/assets/files/p.txt
    [/var/www/wps202/data/www/plus78.wps.qh0.ru/assets/files/test.ppt] => /var/www/wps202/data/www/plus78.wps.qh0.ru/assets/files/test.ppt
    [/var/www/wps202/data/www/plus78.wps.qh0.ru/assets/files/test1] => Array
        (
            [/var/www/wps202/data/www/plus78.wps.qh0.ru/assets/files/test1/1452736497_yumor12.jpg] => /var/www/wps202/data/www/plus78.wps.qh0.ru/assets/files/test1/1452736497_yumor12.jpg
            [/var/www/wps202/data/www/plus78.wps.qh0.ru/assets/files/test1/Test2] => /var/www/wps202/data/www/plus78.wps.qh0.ru/assets/files/test1/Test2
            [/var/www/wps202/data/www/plus78.wps.qh0.ru/assets/files/test1/files] => Array
                (
                    [/var/www/wps202/data/www/plus78.wps.qh0.ru/assets/files/test1/files/intest] => Array
                        (
                            [/var/www/wps202/data/www/plus78.wps.qh0.ru/assets/files/test1/files/intest/test.txt] => /var/www/wps202/data/www/plus78.wps.qh0.ru/assets/files/test1/files/intest/test.txt
                        )
 
                    [/var/www/wps202/data/www/plus78.wps.qh0.ru/assets/files/test1/files/test.doc] => /var/www/wps202/data/www/plus78.wps.qh0.ru/assets/files/test1/files/test.doc
                    [/var/www/wps202/data/www/plus78.wps.qh0.ru/assets/files/test1/files/test.pdf] => /var/www/wps202/data/www/plus78.wps.qh0.ru/assets/files/test1/files/test.pdf
                    [/var/www/wps202/data/www/plus78.wps.qh0.ru/assets/files/test1/files/test.ppt] => /var/www/wps202/data/www/plus78.wps.qh0.ru/assets/files/test1/files/test.ppt
                    [/var/www/wps202/data/www/plus78.wps.qh0.ru/assets/files/test1/files/test.pptx] => /var/www/wps202/data/www/plus78.wps.qh0.ru/assets/files/test1/files/test.pptx
                    [/var/www/wps202/data/www/plus78.wps.qh0.ru/assets/files/test1/files/test.rar] => /var/www/wps202/data/www/plus78.wps.qh0.ru/assets/files/test1/files/test.rar
                    [/var/www/wps202/data/www/plus78.wps.qh0.ru/assets/files/test1/files/test.txt] => /var/www/wps202/data/www/plus78.wps.qh0.ru/assets/files/test1/files/test.txt
                    [/var/www/wps202/data/www/plus78.wps.qh0.ru/assets/files/test1/files/test.xls] => /var/www/wps202/data/www/plus78.wps.qh0.ru/assets/files/test1/files/test.xls
                    [/var/www/wps202/data/www/plus78.wps.qh0.ru/assets/files/test1/files/test.xlsx] => /var/www/wps202/data/www/plus78.wps.qh0.ru/assets/files/test1/files/test.xlsx
                    [/var/www/wps202/data/www/plus78.wps.qh0.ru/assets/files/test1/files/test.zip] => /var/www/wps202/data/www/plus78.wps.qh0.ru/assets/files/test1/files/test.zip
                )
 
            [/var/www/wps202/data/www/plus78.wps.qh0.ru/assets/files/test1/test_gr] => Array
                (
                    [/var/www/wps202/data/www/plus78.wps.qh0.ru/assets/files/test1/test_gr/test22] => Array
                        (
                            [/var/www/wps202/data/www/plus78.wps.qh0.ru/assets/files/test1/test_gr/test22/greencity1.jpg] => /var/www/wps202/data/www/plus78.wps.qh0.ru/assets/files/test1/test_gr/test22/greencity1.jpg
                            [/var/www/wps202/data/www/plus78.wps.qh0.ru/assets/files/test1/test_gr/test22/map.jpg] => /var/www/wps202/data/www/plus78.wps.qh0.ru/assets/files/test1/test_gr/test22/map.jpg
                        )
 
                )
 
        )
 
    [/var/www/wps202/data/www/plus78.wps.qh0.ru/assets/files/папка] => Array
        (
            [/var/www/wps202/data/www/plus78.wps.qh0.ru/assets/files/папка/Main] => /var/www/wps202/data/www/plus78.wps.qh0.ru/assets/files/папка/Main
            [/var/www/wps202/data/www/plus78.wps.qh0.ru/assets/files/папка/text.txt] => /var/www/wps202/data/www/plus78.wps.qh0.ru/assets/files/папка/text.txt
        )
 
)
Добавлено через 4 минуты
Пифагор, думаю нужно как то создавать два массива один для папок другой для файлов и потом с ними делать array_merge() но как реализовать это мозгов не хватило.
0
2139 / 1631 / 831
Регистрация: 10.01.2015
Сообщений: 5,144
08.09.2016, 15:08 4
kepamuk, зачем Вы снова дамп выложили???
PHP
1
$arr = array('ключ' => 'значение'); //в таком виде можете выложить?
ЗЫ
Вероятно, поможет array_walk_recursive() + регулярка.
0
14 / 14 / 5
Регистрация: 03.09.2013
Сообщений: 159
09.09.2016, 07:45  [ТС] 5
...

Добавлено через 6 минут
Пифагор,
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
function scandirectory($directory){
    $iterator = new DirectoryIterator($directory);
    
    foreach($iterator as $element){
      
        if($element->isDot()){
            continue;
        }
        
        $arr_listing[$element->isDir() ? 1 : 2 . "|" . $element->getRealPath()] = $element->getRealPath();
        
        if($element->isDir()){
          // if(empty(scandirectory($element->getRealPath()))){
          //   continue;
          // }
          $arr_listing[1 . "|" . $element->getRealPath()] = scandirectory($element->getRealPath());
          
        }
        ksort($arr_listing, SORT_STRING);
    }
    return $arr_listing;
}
Додумался до "гениальной" идеи проставлять префикс в виде цифр в зависимости от того является файл папкой или файлом $element->isDir() ? 1 : 2 , теперь все само сортируется как надо

Добавлено через 7 минут
Пифагор,
Использовал вот такую функцию для вывода массива
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
$path = "assets/files";
if(!$path){
  return false;
}
 
function scandirectory($directory){
    $iterator = new DirectoryIterator($directory);
    
    foreach($iterator as $element){
      
        if($element->isDot()){
            continue;
        }
        
        $arr_listing[$element->isDir() ? 1 : 2 . "|" . $element->getRealPath()] = $element->getRealPath();
        
        if($element->isDir()){
          // if(empty(scandirectory($element->getRealPath()))){
          //   continue;
          // }
          $arr_listing[1 . "|" . $element->getRealPath()] = scandirectory($element->getRealPath());
          
        }
        ksort($arr_listing, SORT_STRING);
    }
    return $arr_listing;
}
$res = scandirectory($path);
где $path = "assets/files"; путь до папки с файлами.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.09.2016, 07:45
Помогаю со студенческими работами здесь

Массив: Отсортировать полученный массив 3 способами: по строкам, по столбцам( возр.), 3) и весь массив
Помогите, пожалуйста ,решить задачу. Очень нужно. Задан массив (4*6). Элементы задаются по...

Ввести массив А. В массив В перенести все элементы массива А, стоящие правее максимального элемента, и имеющие нечетный индекс. Массив В отсортировать
Добрый Вечер! Написал первую часть программы по этому заданию"Ввести массив А. В массив В перенести...

Считать массив из файла и отсортировать его. Отсортированный массив сохранить в файл
Создать одномерный массив. Сохранить его в файл. Считать массив из файла и отсортировать его....

Вычислить среднее арифметическое элементов, дописать в массив и отсортировать массив по возростанию
5)Вычислить среднее арифметическое элементов, дописать в массив и отсортировать массив по...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru