2010-08-31 3 views
1

Я понятия не имею, как это сделать и нужна ваша помощь!Перемещение файлов в каталог в цикле foreach?

У меня есть массив имен файлов, называемых $ 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 просто хранит локальный путь к файлу, использующий мой проект. в моем случае это только папка, в которой я работаю, поэтому это «файлы».

Я понятия не имею, какой метод я должен использовать для этого и как я мог это решить!

Благодарим за помощь!

+0

вам нужно использовать переименование, как в вашем примере, то, что вы получаете в этом примере –

+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. 
     } 
} 
+0

спасибо, что работает отлично , разве есть простой способ сделать то же самое с каталогами? Представьте, что массив $ bundle содержит не только файлы, но и каталоги. (file_one.jpg, directory1, file_two.pdf, another-directory) Я проверяю папку с $ ext = pathinfo ($ value, PATHINFO_EXTENSION); if ($ ext == '') {его папка !!! Мне просто нужна функция или метод, который позволит мне переместить полные каталоги со всем содержимым !? – matt

+0

@mathi только потому, что у файла нет расширения, это не значит, что это папка. Используйте 'is_dir', чтобы проверить, является ли каталог каталогом. – Gordon

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

Смежные вопросы