2017-08-09 141 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; 
} 

仅供参考,请参阅: