2017-08-09 6 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

をお試しください:

foreachループ付きあるいは
$extensions = ['mp4', 'avi', 'mkv'];  

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

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

$filepaths = []; 

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

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

    $filepaths[] = $current; 
} 

参考までに、以下を参照してください。

関連する問題