0

RecursiveDirectoryIterator() を使用しています。ディレクトリ階層内の指定された文字列の最初のインスタンスで単一のファイルを作成する必要があることをプログラムに通知したい状況があります。RecursiveDirectoryIterator() がこれに適していることを願っていますが、より意味のある別のオプションがあれば、それも受け入れます。
私の質問の詳細については、以下を参照してください...ありがとう。

コード:

$in_dir = 'none';
$path = '.';
$dir  = new RecursiveDirectoryIterator($path, RecursiveDirectoryIterator::SKIP_DOTS);
$files = new RecursiveIteratorIterator($dir, RecursiveIteratorIterator::SELF_FIRST);

foreach($files as $object){
  //if this is a directory... find out which one it is.
  if($object->isDir()){
    if(strpos($object->getPathname(), 'dir1') == true){
      //i need a file (file1.txt) created here, upon the first instance found
      $in_dir = 'dir1';
    }else if(strpos($object->getPathname(), 'dir2') == true){
      //i need a file (file2.txt) created here, upon the first instance found
      $in_dir = 'dir2';
    }
}
4

1 に答える 1

2

ディレクトリに初めてアクセスしたときを追跡する必要があるだけです...

$in_dir = 'none';
$path = '.';
$dir  = new RecursiveDirectoryIterator($path, RecursiveDirectoryIterator::SKIP_DOTS);
$files = new RecursiveIteratorIterator($dir, RecursiveIteratorIterator::SELF_FIRST);
// not seen yet
$foundDir1 = false;
$foundDir2 = false;

foreach($files as $object){
    //if this is a directory... find out which one it is.
    if($object->isDir()){
        if(strpos($object->getPathname(), 'dir1') == true){
            //i need a file (file1.txt) created here, upon the first instance found
            if (!$foundDir1) {
                // first time we've seen it, create file...

                // mark as found
                $foundDir1 = true;
            }
        }else if(strpos($object->getPathname(), 'dir2') == true){
            //i need a file (file2.txt) created here, upon the first instance found
            if (!$foundDir2) {
                // first time we've seen it, create file...

                // mark as found
                $foundDir2 = true;
            }
        }
    }
}
于 2013-03-22T19:26:57.973 に答える