Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Jak segregować wielowymiarowe tablice?
MESSIAH :)
post
Post #1





Grupa: Zarejestrowani
Postów: 249
Pomógł: 0
Dołączył: 22.12.2011

Ostrzeżenie: (10%)
X----


Chciałbym się dowiedzieć jak można posortować wielowymiarowe tablice mam na myśli kilku wymiarowe a nie dwie. Z tego co się orientuje to muszę każdy wymiar schować do nowo utworzonej tablicy i wtedy sortować i tak z każdym wymiarem?
Powiedzmy że tablica wygląda tak:
Kod
Array
(
    [0] => .htaccess.
    [1] => .htpasswd
    [2] => hhgute.hhi
    [3] => autoload.php
    [4] => config.php
    [5] => fp.map
    [6] => index.php
    [7] => test.php
    [8] => Array
        (
            [0] => .pemhtaccess
        )

    [9] => Array
        (
            [con] => Array
                (
                    [ror] => Array
                        (
                            [0] => Roctor.php
                            [1] => Roe.php
                            [2] => Derator.php
                            [Dtor] => Array
                                (
                                    [0] => Mared.php
                                    [1] => Chased.php
                                    [2] => Gred.php
                                    [3] => Groed.php
                                    [4] => Restract.php
                                )

                            [Dis] => Array
                                (
                                    [0] => Marked.php
                                    [1] => Chased.php
                                    [2] => Grouped.php
                                    [3] => Grouped.php
                                    [4] => Regt.php
                                )

                            [3] => Badion.php
                            [4] => Rouser.php
                            [5] => fns.php
                            [6] => bootstrap.php
                            [Ror] => Array
                                (
                                    [0] => S.php
                                )

                            [7] => Dispr.php
                        )

                )

            [view] => Array
                (
                    [0] => viewLr.php
                    [1] => view.php
                    [2] => wid.php
                )

        )
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
redeemer
post
Post #2





Grupa: Zarejestrowani
Postów: 915
Pomógł: 210
Dołączył: 8.09.2009
Skąd: Tomaszów Lubelski/Wrocław

Ostrzeżenie: (0%)
-----


Co to za bełkot (np. "Jak widzimy system nie może rozróznić dwóch różnych stringów" - przecież widać dokładnie coś odwrotnego). Nie potrafisz się wysłowić i ja w sumie dalej do końca nie wiem o co chodzi bo zamiast dać przykłady "jak jest teraz", a "czego oczekujesz" to nabijasz posty jakimiś bzdurami (z tego co pamiętam, to ostatni wątek z tym "niemożliwym w PHP" sortowaniem został nawet zamknięty)
Cytat
Ale niestety jest niemożliwe posortowanie według podkatalogów. Szukałem w całym necie i nigdzie nic nie ma. PHP jest ułomnym językiem skoro nie ma zdefiniowanego sortowania domyślnie według nazw. Problem z tą tablicą polega na tym iż PHP nie potrafi rozróżnić nazwy pliku od nazwy katalogu i żadna funkcja sortowania nie daje efektu. Wątpię by ktoś tutaj znał rozwiązanie. Nawet na SOF mają z tym problem.
Jest możliwe. Źle szukałeś. Dalej nie rozumiesz, że to nie PHP jest za to odpowiedzialny. Problem polega z Tobą, bo myślisz że pozjadałeś wszystkie rozumy, a jak czegoś nie potrafisz to "się nie da", albo "PHP jest do dupy" (to nie pierwszy wątek gdzie można to zaobserwować). Z takim podejściem nie wróżę Ci wielkiej kariery w zawodzie programisty, chyba że będziesz miał ksywę "nie da się" :-)

Wracając do problemu, jeśli dobrze zrozumiałem, to nawet mając Twoją tablicę wynikową można to łatwo zrobić:
  1. <?php
  2.  
  3. $t = [
  4. './core/con/ro/Daed.php',
  5. './core/con/ro/Datator/Groased.php',
  6. './core/con/ro/Datator/Grouased.php',
  7. './core/con/ro/Datator/Mased.php',
  8. './core/con/ro/Datator/Rebstract.php',
  9. './core/con/ro/Disher.php',
  10. './core/con/ro/Disher/Chsed.php',
  11. './core/con/ro/Disher/Gsed.php',
  12. './core/con/ro/Disher/GtBased.php',
  13. './core/con/ro/Disher/Maed.php',
  14. './core/con/ro/Disher/Rtract.php',
  15. './core/con/ro/Dor.php'
  16. ];
  17.  
  18. $n = [];
  19.  
  20. foreach($t as $k => $v) {
  21. $n[] = ['path'=>$v, 'level'=>substr_count($v, '/')];
  22. }
  23.  
  24. $sort = [];
  25. foreach($n as $k=>$v) {
  26. $sort['path'][$k] = $v['path'];
  27. $sort['level'][$k] = $v['level'];
  28. }
  29.  
  30. array_multisort($sort['level'], SORT_ASC, $sort['path'], SORT_ASC, $n);
  31.  
  32.  
  33. foreach($n as $v) {
  34. echo $v['path'].PHP_EOL;
  35. }

Wynik:
Kod
./core/con/ro/Daed.php
./core/con/ro/Disher.php
./core/con/ro/Dor.php
./core/con/ro/Datator/Groased.php
./core/con/ro/Datator/Grouased.php
./core/con/ro/Datator/Mased.php
./core/con/ro/Datator/Rebstract.php
./core/con/ro/Disher/Chsed.php
./core/con/ro/Disher/Gsed.php
./core/con/ro/Disher/GtBased.php
./core/con/ro/Disher/Maed.php
./core/con/ro/Disher/Rtract.php
Czy takiego wyniku oczekujesz?

Ps. Ile w ogóle znasz języków, żeby wypowiadać się na temat ułomności PHP?

Ten post edytował redeemer 18.10.2015, 09:12:15
Go to the top of the page
+Quote Post

Posty w temacie
- MESSIAH :)   Jak segregować wielowymiarowe tablice?   10.10.2015, 19:19:16
- - Pyton_000   A Ty dalej swoje... http://php.net/manual/en/funct...   10.10.2015, 19:49:01
- - MESSIAH :)   Witam serdecznie. Lepiej mi pomóż się z tym uporać...   10.10.2015, 20:03:16
- - Crozin   1. Jak miałoby to być posortowane? 2. Dostałeś na ...   10.10.2015, 20:12:09
- - Pyton_000   A jeszcze lepiej posortować PRZED budowaniem takie...   10.10.2015, 20:13:30
- - MESSIAH :)   Niestety array_multisort() wywala mi błąd: Fatal e...   10.10.2015, 20:32:08
- - Pyton_000   Od rzyci strony się do tego zabierasz...   10.10.2015, 20:37:44
- - MESSIAH :)   Masz proszę oto funkcja: Kod$ritit = new Recu...   10.10.2015, 20:51:49
- - kapslokk   Stwórz sobie tablicę w formie: [PHP] pobierz, plai...   10.10.2015, 20:57:36
- - MESSIAH :)   Stworzyłem takową lecz jest nie posortowana bo ser...   10.10.2015, 21:14:09
- - kapslokk   To sobie napisz sortowanie bąbelkowe na szybko. Se...   10.10.2015, 21:19:22
- - MESSIAH :)   No niestety nie umie bo się dopiero uczę.   10.10.2015, 21:21:17
- - Tomplus   Pobierz sobie klasę: http://www.phpclasses.org/pac...   10.10.2015, 21:50:58
|- - MESSIAH :)   Cytat(Tomplus @ 10.10.2015, 22:50:58 ...   10.10.2015, 22:08:03
- - Pyton_000   http://stackoverflow.com/questions/2930405...recto...   10.10.2015, 21:55:24
- - Crozin   1. Nadal nie podałeś nam jak finalnie ma być posor...   10.10.2015, 22:47:01
- - MESSIAH :)   Chcę to posortować tak jak system Windows: Według ...   11.10.2015, 13:20:38
- - Crozin   CytatChcę to posortować tak jak system Windows: We...   11.10.2015, 16:22:17
- - MESSIAH :)   Udaje mi się posortować lecz ostatni problem tkwi ...   12.10.2015, 20:53:25
- - Crozin   CytatUdaje mi się posortować lecz ostatni problem ...   12.10.2015, 21:19:57
- - MESSIAH :)   Teraz mam taką tablicę: [PHP] pobierz, plaintext ...   17.10.2015, 20:38:12
- - redeemer   Co to za bełkot (np. "Jak widzimy system nie ...   18.10.2015, 09:04:05
- - MESSIAH :)   Dzięki za nakierowanie na właściwy trop. Problem j...   18.10.2015, 09:50:57
- - redeemer   [PHP] pobierz, plaintext $n[] = ['path...   18.10.2015, 09:55:22
- - MESSIAH :)   Wielkie dzięx kolego. Ten drugi multisort zrobił r...   18.10.2015, 10:30:11
- - redeemer   Zobacz to. Pisane na kolanie, nie sprawdzałem czy ...   18.10.2015, 12:44:02
- - MESSIAH :)   Ciekawy przykład. Tylko jest w nim mała wada a mia...   18.10.2015, 15:04:34


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 6.10.2025 - 21:12