1

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

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

我现在想移动存储在 $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 只存储我用于我的项目的本地文件路径。在我的情况下,它只是我正在工作的文件夹 - 所以它是“文件”。

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

感谢您的帮助!

4

3 回答 3

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.
        }
}
于 2010-08-31T06:20:17.633 回答
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.
        }
}
于 2010-08-31T06:28:30.093 回答
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 的需求

于 2010-08-31T07:18:54.403 回答