在foreach循环中将文件移动到目录中?

时间:2010-08-31 06:08:51

标签: php move

我不知道该怎么做,需要你的帮助!

我有一个名为$ bundle的文件名数组。 (file_one.jpg,file_two.pdf,file_three.etc) 我有$文件夹中存储的文件夹的名称。 (my_directory)

我现在想将$ bundle中存储的所有文件移动到目录$ folder。

我该怎么做?

    //print count($bundle); //(file_one.jpg, file_two.pdf, file_three.jpg)
    $folder = $folder = PATH . '/' . my_directory;
 foreach ($bundle as $value) {

  //rename(PATH.'/'.$value, $folder . '/' . $value);

 }

这样就不会让人感到困惑:PATH只为我的项目存储本地文件路径im。在我的情况下,它只是我正在使用的文件夹 - 所以它是“文件”。

我不知道我必须使用哪种方法以及如何解决这个问题!

谢谢你的帮助!

3 个答案:

答案 0 :(得分:1)

您提供的代码应该进行微小的更改:

$folder = PATH . '/' . 'my_directory'; // enclose my_directory in quotes.
foreach ($bundle as $value) {
        $old = PATH.'/'.$value, $folder;
        $new = $folder . '/' . $value;
        if(rename($old,$new) !== false) {
                // renamed $old to $new
        }else{
                // rename failed.
        }
}

答案 1 :(得分:0)

$folder = PATH . '/' . $folder;
foreach ($bundle as $value) {
        $old = PATH.'/'.$value;
        $new = $folder . '/' . $value;
        if(rename($old,$new) !== false) {
                // renamed $old to $new
        }else{
                // rename failed.
        }
}

答案 2 :(得分:0)

未经测试但应该有效:

function bulkMove($src, $dest) {
    foreach(new GlobIterator($src) as $fileObject) {
        if($fileObject->isFile()) {
            rename(
                $fileObject->getPathname(),
                rtrim($dest, '\\/') . DIRECTORY_SEPARATOR . $fileObject->getBasename()
            );
        }
    }
}
bulkMove('/path/to/folder/*', '/path/to/new/folder');

可以添加一些检查以查看目标文件夹是否可写。如果您不需要通配符匹配,请将GlobIterator更改为DirectoryIterator。这也将消除对PHP5.3的需求