scandir() 显示文件 found/not 发现错误信息

scandir() display file found/not found error messge

我有 100 个文件,我正在扫描它们并从中选择正确的文件。

我正在使用以下代码:

 $dir    = 'myDir';
 $files1 = scandir($dir);

 $scanned_directory = array_diff($files1, array('..', '.'));


 foreach ($scanned_directory as $key => $value) {
    $onlyname=explode(".", $value);
    if($onlyname[0]== $name){
        // echo "file found";
        break;
    }else{
        //echo "<h2>Not Found. Please Try Later</h2>";
    }

 }

这个问题是,如果文件是第 10 个文件,我会在收到文件找到消息之前得到 9x 未找到

如果找不到文件,显示错误消息的正确方法是什么?

我稍微简化了你的代码。

首先,如果至少有 1 个文件具有该特定名称,我会将您目录中的所有文件放入一个数组 glob(). Then I simply grab all files which have the name $name with preg_grep() and check with count()

<?php

    $dir = "myDir";
    $files = glob($dir . "/*.*");

    if(count(preg_grep("/^$name\..*$/", array_map("basename", $files))) > 0)
        echo "file found";
    else
        echo "<h2>Not Found. Please Try Later</h2>";

?>