Avatar
hutla.vojtech:

Ahoj, chtěl bych se zeptat, jestli je možnost vypsat všechny soubory jednoho adresáře do pole? Vím, že to jde se scandir(), jenomže potřebuji projet i podadresáře, jejichž názvy dopředu nevím - vytvoří je uživatel. Děkuji za tipy :)

 
Odpovědět 14.2.2015 19:47
Avatar
d4rkw34v3r
Člen
Avatar
d4rkw34v3r:

Ahoj, mrkni sem do dokumentace http://php.net/….scandir.php#…

Řeší to konkrétně tvůj problém.
Případně další příklady níže v komentářích.

Editováno 14.2.2015 20:02
 
Nahoru Odpovědět  +3 14.2.2015 20:01
Avatar
 
Nahoru Odpovědět 15.2.2015 12:45
Avatar
Denis Homolík (Alfonz):

V podstatě si vytvoříš funkci, která spustí scandir() a pak ve všech složkách co to najde, zavolá sama sebe a výsledek uloží do pole. Samozřejmě tato funkce vrací pole.

Nahoru Odpovědět 15.2.2015 23:28
Vše je možné, dokud si to myslíte!
Avatar
hutla.vojtech:

Dobře, zkusil jsem si něco napsat po svém a vyhazuje to toto pole :

Array ( [cs] => Array ( [podslozka] => Array ( [0] => another_file.json [1] => another_file_2.json ) [0] => welcome.json ) [0] => loading.gif )

Horší je, že bych potřeboval, aby došlo k vypsání souborů včetně cesty k nim. Mám metodu v třídě s tímto kódem :

protected static function arrayDirTree($dir_array) {
        foreach($dir_array as $key => $value) {
                if(is_array($value)) {
                        self::arrayDirTree($value);
                } else {
                        echo $value.'<br />';
                }
        }
}

která vyhazuje jen názvy souborů. Nevíte, jak připsat i cestu? Napadlo mě před to přidat název klíče, což je v podstatě jméno adresáře, ale to vypíše jen poslední nadřazený adresář. Jsem v koncích.

Editováno 17.2.2015 21:30
 
Nahoru Odpovědět 17.2.2015 21:29
Avatar
shaman
Člen
Avatar
Odpovídá na hutla.vojtech
shaman:

Skus toto:

<?php

$dir_array =
    [
        'cs' =>
            [
                'podslozka' =>
                    [
                        '0' => 'another_file.json',
                        '1' => 'another_file_2.json'
                    ],
                '0' => 'welcome.json'
            ],
        '0' => 'loading.gif'
    ];

class TotalCommander
{
    public static function arrayDirTree($dir_array, $folder = '')
    {
        foreach ($dir_array as $key => $value) {
            if (is_array($value)) {
                $fullFolder = $folder.'/'.$key;
                self::arrayDirTree($value, $fullFolder);
            } else {
                echo $folder.'/'.$value . '<br />';
            }
        }
    }
}

TotalCommander::arrayDirTree($dir_array);

Cosi som si dorobil aby mi to vyhadzovalo nejake vysledky, ale teraz mi to pise toto:

/cs/podslozka/another_file.json
/cs/podslozka/another_file_2.json
/cs/welcome.json
/loading.gif
Nahoru Odpovědět 17.2.2015 22:25
try {...} catch (Exception ignored) { echo " ¯\_(ツ)_/¯ "; }
Avatar
shaman
Člen
Avatar
Odpovídá na hutla.vojtech
shaman:

Ozaj este ma trochu zarazilo ze to mas ako protected static funkciu. Protected funkciu nevies zavolat mimo triedy, takze tu funkciu volas len z vnutra triedy? Ak ano, tak ju uz mas inicializovanu, nie? Preco potom static?

Nahoru Odpovědět 17.2.2015 22:28
try {...} catch (Exception ignored) { echo " ¯\_(ツ)_/¯ "; }
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 7 zpráv z 7.