Spostare i file nella directory in ciclo foreach?
Domanda
Non ho idea di come fare e hanno bisogno del vostro aiuto!
Ho una serie di nomi di file chiamato $ bundle. (File_one.jpg, file_two.pdf, file_three.etc) e ho il nome della cartella memorizzata in $ cartella. (My_directory)
Ora vorrebbe spostare tutti i file memorizzati in $ fascio per spostare nella cartella directory $.
Come posso fare?
//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);
}
solo quindi non è confondere: PATH solo memorizza il im file-path locale utilizzando per il mio progetto. nel mio caso è solo la cartella sto lavorando in modo che sia "file".
non ho idea di quale metodo devo usare per questo e come potrei risolvere questo!
grazie per il vostro aiuto!
Soluzione
Il codice da Lei dovrebbe lavorare con lievi modifiche:
$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.
}
}
Altri suggerimenti
$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.
}
}
Non testato, ma dovrebbe funzionare:
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');
potrebbe aggiungere alcuni controlli per vedere se la cartella di destinazione è scrivibile. Se non avete bisogno di corrispondenza jolly, cambiare il GlobIterator
a DirectoryIterator
. Che sarebbe anche eliminare la necessità di PHP5.3