Autor Zpráva
RiZe
Profil
Mám napsanou rekurzivní funkci, která indexuje fotografie ve složce galery v rootu webu. Funguje dobře, ale nelibí se mi její výstup. Funkce má tento kód:


function recursiveOpenDirRead($path = "galery")
{
$connection = @opendir("./" . $path);

while (false !== ($file = @readdir($connection)))
{
// Pouze obrázky
if (preg_match("#(.)*.(jpg|jpeg|gif|png|bmp)$#i", $file) && $file != "." && $file != "..")
{
$index[] = $path . "/" . $file;
}
// Složku otevřeme a indexujeme
else if (is_dir("./" . $path . "/" . $file) && $file != "." && $file != "..")
{
$index[] = recursiveOpenDirRead($path . "/" . $file);
}
}

return $index;
}


Funkce vrací obrázky v tomto formátu (1), kde první prvek pole 0 je jedna složka, takže po otevření další složky vzniká další prvek s číslem 1, ve kterém je pole s cestami k obrázkům. Já ale potřebuji, aby výstup bylo jedno jediné pole, jehož prvky by byly rovnou cestu k obrázkům (2). Ocením jakoukoliv pomoc

(1)
Array
(
[0] => Array
(
[0] => galery/clanfoto/shot0000.jpg
[1] => galery/clanfoto/shot0001.jpg
[2] => galery/clanfoto/shot0002.jpg
[3] => galery/clanfoto/shot0003.jpg
[4] => galery/clanfoto/shot0006.jpg
[5] => galery/clanfoto/shot0007.jpg
[6] => galery/clanfoto/shot0010.jpg
[7] => galery/clanfoto/shot0011.jpg
)
[1] = Array
....
)
(2)
Array
(
[0] => galery/clanfoto/shot0000.jpg
[1] => galery/clanfoto/shot0001.jpg
[2] => galery/clanfoto/shot0002.jpg
[3] => galery/clanfoto/shot0003.jpg
[4] => galery/clanfoto/shot0006.jpg
[5] => galery/clanfoto/shot0007.jpg
[6] => galery/clanfoto/shot0010.jpg
[7] => galery/clanfoto/shot0011.jpg
...
)
Peca
Profil
return $index[0];
RiZe
Profil
Dobrý pokus, ale nefunguje, funkce tak vrát í pouze první fotografii :(
tiso
Profil
miesto: $index[] = recursiveOpenDirRead($path . "/" . $file);
napíš: $index = $index+recursiveOpenDirRead($path . "/" . $file);
ak to nepôjde, tak http://php.vrana.cz/sjednocovani-poli.php
RiZe
Profil
Tak to opravdu nepůjde :(, ale díky za ochotu. Mrknu na to.
Peca
Profil
RiZe
Beru zpět. Nějak jsem si neuvědomil, že se jedná o rekurzivní funkci :-)
Co teda zrušit celou větev elseif?
RiZe
Profil
Nakonec jsem problém vyřešil pomocí globální proměnné, kterou jsem deklaroval mimo fci, a ve větvi else if jsem odstranil $index[] =

Díky všem za snahu
Toto téma je uzamčeno. Odpověď nelze zaslat.