Avatar billede konder Nybegynder
08. februar 2006 - 12:40 Der er 20 kommentarer og
1 løsning

Alle filer i mappe ud i array efter type

Sidder og roder med at få alle filer ud fra mappe(../jazz) men vil høre om jeg kan få ud i to arrays efter type. I mappen er kun 2 typer: jazz1.jpg, jazz2.jpg o.s.v.+ jazz1.wav, jazz2.wav o.s.v.
Avatar billede jaw Nybegynder
08. februar 2006 - 12:49 #1
Noget i denne stil burde give dig 2 arrays:
<?
$dir = "./jazz/";
$navn = array();
$type = array();
$handle=opendir($dir);
while (false !== ($file = readdir($handle))) {
    if($file != "." && $file != "..") {
            $pathinfo = pathinfo($dir.$file);
            $navn[] = $file;
            $type[] = $pathinfo['extension'];
    }
}
closedir($handle);
?>
Avatar billede gizmo-gizmo Nybegynder
08. februar 2006 - 12:51 #2
Hvis de altid følger det mønster du har beskrevet, så kan du måske:

$jazz1 = array();
$jazz2 = array();

.. en eller anden kode der looper gennem filerne i mappen her ..

if (substr($filnavn, strlen($filnavn)-5, 1) == 1)
{
  $jazz1[] = $filnavn;
}
else
{
  $jazz2[] = $filnavn;
}

Denne linje:
substr($filnavn, strlen($filnavn)-5, 1)
Tager det tegn der står før fx ".jpg" .. dvs. filerne skal hedde blablaTAL.bla

Er det filtypen du vil kigge på kan du i stedet bruge:
substr($filnavn, strlen($filnavn)-3, 3)  (så får du f.eks. jpg eller wav)
Avatar billede konder Nybegynder
08. februar 2006 - 13:01 #3
det jeg skal bruge er 2 array , det ene med alle jpg-filer det andet med alle wav.
prøver lige igennem:)
Avatar billede jaw Nybegynder
08. februar 2006 - 13:05 #4
Nåååå:

<?
$dir = "./jazz/";
$jpg = array();
$wav = array();
$handle=opendir($dir);
while (false !== ($file = readdir($handle))) {
  if($file != "." && $file != "..") {
    $pathinfo = pathinfo($dir.$file);
    if($pathinfo['extension'] == "jpg") {
      $jpg[] = $file;
    } else {
      $wav[] = $file;
    }
  }
}
closedir($handle);
?>
Avatar billede gizmo-gizmo Nybegynder
08. februar 2006 - 13:07 #5
Jeg tillader mig at låne lidt i dit eksempel jaw :-)

<?
$jpegs = array();
$waves = array();
$dir = "./jazz/";
$handle=opendir($dir);
while (false !== ($file = readdir($handle)))
{
    if($file != "." && $file != "..")
    {
        if (substr($file, strlen($file)-5, 1)  == "jpg")
        {
            $jpegs[] = $file;
        }
      else
        {
            $waves[] = $file;
        }
    }
}
closedir($handle);
?>
Avatar billede gizmo-gizmo Nybegynder
08. februar 2006 - 13:07 #6
arhh... jeg er sgu for langsom :)
Avatar billede jaw Nybegynder
08. februar 2006 - 13:09 #7
:)
Avatar billede konder Nybegynder
08. februar 2006 - 13:12 #8
skammeligt ..men jeg kan ikke finde ud af at udskrive de 2 array
Avatar billede jaw Nybegynder
08. februar 2006 - 13:13 #9
Eksempelvis:
foreach($jpg as $name) {
  echo $name . "<br />";
}
Avatar billede konder Nybegynder
08. februar 2006 - 13:18 #10
suk jaw>> hvor skal det helt nøjagtig sættes ind
Avatar billede jaw Nybegynder
08. februar 2006 - 13:19 #11
Efter du har opbygget dine arrays, så sådan set lige før din afsluttende ?>.
Avatar billede konder Nybegynder
08. februar 2006 - 13:20 #12
ja det troede jeg osse men den viser ikke noget
Avatar billede jaw Nybegynder
08. februar 2006 - 13:26 #13
Hm, det virker nu her hos mig. Evt. kan du smide en eller flere echo'er ind i din kode for at se om den overhovedet finder nogen:

if($pathinfo['extension'] == "jpg") {
  echo "Jpg fundet<br />";
  ....
}
Avatar billede konder Nybegynder
08. februar 2006 - 13:34 #14
ingen output, (ellers har jeg tidligere ved mine første echo-forsøg fået array,array,array o.s.v.)
Avatar billede konder Nybegynder
08. februar 2006 - 13:39 #15
og altså den har godtnok sagt array for hver eneste fil.(3 jpg +3 wav)
Avatar billede konder Nybegynder
08. februar 2006 - 13:51 #16
fatter intet, specielt når det virker hos dig, jaw
Avatar billede konder Nybegynder
08. februar 2006 - 14:00 #17
når jeg lægger echoen ind i dit første forslag får jeg 6 stk jpg fundet
Avatar billede konder Nybegynder
08. februar 2006 - 14:33 #18
Fejlen fundet--filerne var med stort!!
Avatar billede konder Nybegynder
08. februar 2006 - 15:00 #19
jeg er altså meget glad for de hurtige svar -det var bestemt min skyld det fejlede. Og at jeg ikke helt kan få det til at køre med mit eksisterende script er også min egen skyld. Så du må endelig lægge et svar.
Avatar billede jaw Nybegynder
08. februar 2006 - 15:07 #20
Den vil du en anden gang kunne "snyde" ved at lave navnet om til lille i tjekket:
if(strtolower($pathinfo['extension']) == "jpg") {

Men bare det virker :) Selv tak...
Avatar billede konder Nybegynder
08. februar 2006 - 15:10 #21
det HELE virker fint nu så mange tak
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester