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

Php 将文件移动到foreach循环中的目录中?,php,move,Php,Move,我不知道怎么做,需要你的帮助 我有一个名为$bundle的文件名数组。(文件1.jpg、文件2.pdf、文件3.etc) 我将文件夹的名称存储在$folder中。(my_目录) 我现在想将$bundle中存储的所有文件移动到$folder目录 我该怎么做 //print count($bundle); //(file_one.jpg, file_two.pdf, file_three.jpg) $folder = $folder = PATH . '/' . my_directo

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

我有一个名为$bundle的文件名数组。(文件1.jpg、文件2.pdf、文件3.etc) 我将文件夹的名称存储在$folder中。(my_目录)

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

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


谢谢你的帮助

您给出的代码应该可以进行细微更改:

$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.
        }
}

您给出的代码应能进行细微更改:

$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.
        }
}

未经测试但应有效:

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的需求,但应该可以:

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的需要

您需要像在示例中一样使用重命名,在本示例中获得的内容设置得更详细一点,如果可能的话,添加更多的代码使其精确您需要像在示例中一样使用重命名,在本示例中获得的内容设置得更详细一点,如果可能的话,添加更多的代码使其精确谢谢您工作得很好,除了有没有一种简单的方法来处理目录?假设$bundle数组不仅包含文件,还包含目录。(file_one.jpg,directory1,file_two.pdf,另一个目录)我正在检查一个扩展名为$ext=pathinfo($value,pathinfo_)的文件夹;如果($ext==''){这是一个文件夹!!!我只需要一个函数或方法,让我移动包含所有内容的完整目录!?@mathi仅仅因为一个文件没有扩展名并不意味着它是一个文件夹。使用
is\u dir
检查一个目录是否是一个目录。谢谢你工作得很好,除了有一种简单的方法可以对目录进行同样的操作吗?imag在$bundle数组中,不仅包含文件,还包含目录。(文件_one.jpg,directory1,文件_two.pdf,另一个目录)我正在检查一个扩展名为$ext=pathinfo($value,pathinfo_)的文件夹;如果($ext=''){这是一个文件夹!!!我只需要一个函数或方法,让我移动包含所有内容的完整目录!?@mathi仅仅因为一个文件没有扩展名并不意味着它是一个文件夹。使用
is\u dir
检查一个目录是否是一个目录。