0

我之前已经遍历了一个文件系统并上传了大量文件名与字符串匹配的文件,并且所有匹配的字符串都在一个数组中。

我现在正在尝试通过同一个文件系统进行迭代,以输出第一次未上传的所有文件的 csv 文件。

// The SPL object is working fine here; problem is in my logic below ...
$it = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path);

foreach($it as $file){
    $filename = $file->getFilename();
    $uploaded_filenames = ['face', 'arm', 'leg'];

    foreach($uploaded_filenames as $up){
        if(strpos($filename, $up) !== false {
            // do nothing!
        }else{
            fputcsv($handle, $filename);
        }
    }
}

只是寻找一种更/正确/优雅的方式来做到这一点

谢谢Orangepill,这几乎奏效了。确切的语法:

$in_array = false;
foreach($this->uploaded_filenames as $whatever){

    if(strpos($filename, $whatever) !== false){
        $in_array = true;
        break;
    }

}

if(!$in_array) fputcsv($handle, $fullpath);

再次感谢!

4

1 回答 1

0

我想你正在寻找的是

$inArray = false;
foreach($uploaded_filenames as $up){
    if(strpos($filename, $up) !== false) {
        $inArray = true;
        break;
    }
}
if (!$inArray)){
    fputcsv ($handle, $filename);    
}

代替

foreach($uploaded_filenames as $up){
        if(strpos($filename, $up) !== false) {
            // do nothing!
        }else{
            fputcsv($handle, $filename);
        }
}
于 2013-06-07T04:28:04.863 回答