2017-08-09 4 views
0

Dies funktioniert für mich jetzt:findet Datei von Namen und Array von Erweiterungen

if (file_exists($filename . '.mp4')) { 
    $filepath = "$filename.mp4"; 
} elseif (file_exists($filename . '.avi')) { 
    $filepath = "$filename.avi"; 
} elseif (file_exists($filename . '.mkv')) { 
    $filepath = "$filename.mkv"; 
} 

mich für einen einfacheren Weg suchen, eine Liste von Dateierweiterungen aus einem Array zu filtern.

+0

Die Frage ist, sind Sie die erste Datei auf, oder alle vorhandenen Dateien finden wollen? – localheinz

Antwort

2

Versuchen Sie, diese

$extensions = ['mp4', 'avi', 'mkv'];  

foreach ($extensions as $extension) { 
    $current = $filename . '.' . $extension; 

    if (file_exists($current)) { 
     $filepath = $current; 

     break; 
    } 
} 
0

Da es aus Ihrer Frage nicht klar ist, ob Sie die erste vorhandene Datei oder alle vorhandenen Dateien, hier finden wollen ist eine Lösung, die alle von ihnen für die Suche:

$extensions = ['mp4', 'avi', 'mkv'];  

$filepaths = array_filter(
    array_map(
     function ($extension) use ($filename) { 
      return $filename . '.' . $extension; 
     }, 
     $extensions 
    ), 
    function ($filepath) { 
     return file_exists($filepath); 
    } 
); 

alternativ mit einem foreach loop:

$extensions = ['mp4', 'avi', 'mkv'];  

$filepaths = []; 

foreach ($extensions as $extension) { 
    $current = $filename . '.' . $extension; 

    if (!file_exists($current)) { 
     continue; 
    } 

    $filepaths[] = $current; 
} 

Als Referenz finden Sie unter:

Verwandte Themen