1

私はそれを行う方法がわからず、あなたの助けが必要です!

$bundle という名前のファイル名の配列があります。(file_one.jpg、file_two.pdf、file_three.etc) と $folder に保存されているフォルダーの名前があります。(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 は、プロジェクトに使用するローカル ファイル パスを格納するだけです。私の場合、それは私が作業しているフォルダーだけなので、「ファイル」です。

これにどの方法を使用する必要があり、どのように解決できるかわかりません!

ご協力ありがとうございました!

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

テストされていませんが、動作するはずです:

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');

宛先フォルダーが書き込み可能かどうかを確認するためのチェックを追加できます。ワイルドカード マッチングが必要ない場合は、 を に変更GlobIteratorDirectoryIteratorます。これにより、PHP5.3 も不要になります。

于 2010-08-31T07:18:54.403 に答える
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 に答える