2017-08-09 181 views
0

的陣列文件現在,這對我的作品:查找名稱和擴展

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

我要尋找從陣列過濾的文件擴展名列表的更簡單的方法。

+0

的問題是,你想找到的第一個現有的文件,或所有現有文件? – localheinz

回答

2

您是否想找到第一現有的文件或所有現有文件試試這個

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

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

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

     break; 
    } 
} 
0

因爲它不是從你的問題不清楚,這裏是尋找所有這些解決方案:

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

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

或者用foreach循環:

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

$filepaths = []; 

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

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

    $filepaths[] = $current; 
} 

僅供參考,請參閱: