我不知道该怎么做,需要你的帮助!
我有一个名为$ 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。在我的情况下,它只是我正在使用的文件夹 - 所以它是“文件”。
我不知道我必须使用哪种方法以及如何解决这个问题!
谢谢你的帮助!
答案 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的需求