2013-10-15 26 views
0

在文件夾「原始的」我有11 33 2子文件夾稱爲1,,,,111 ...他們的所有數字PHP的重命名()被移動的兩個文件夾,而不是一個

此腳本排序陣列隨後移動第一文件夾(在這種情況下,文件夾1)到文件夾「的舉動,在這裏」

一切工作正常,但2個文件夾,每次,而不只是一個動作,文件夾1 & 11移動在我的第一次嘗試

回聲給我'移動文件夾:1',所以我真的不知道爲什麼重命名()移動2個文件夾?

$wallpapers = array_map('basename',glob("/path-to-folder/original/*",GLOB_ONLYDIR)); 
natsort($wallpapers); 
$wallpaper = $wallpapers[0]; 
if (empty($wallpaper)) { 
    echo "0 folders in that directory"; 
    die(); 
} 
if (!file_exists("/path-to-folder/original/$wallpaper")) { 
    echo "folder does not exist"; 
    die(); 
} 
echo "moved folder: $wallpaper"; 
rename("/path-to-folder/original/$wallpaper/","/path-to-folder/move-here/$wallpaper/"); 
+0

你在開玩笑它只是第一次嘗試礦石它總是移動兩個文件夾???! 「你說我的第一次嘗試移動文件夾1和11」。你運行這兩個腳本。 – mbouzahir

+0

每次移動2次1次運行 – Sunny

+0

我在我的機器上測試了你的代碼,一切正常。你確定它正在移動兩個文件夾?你是否刪除了'move-here'中的所有文件夾? –

回答

0

我所面臨的類似的問題,但我已經使用整數轉換函數intval()固定它。在某些情況下,PHP排序也有類似的問題。

rename("/path-to-folder/original/$wallpaper/","/path-to-folder/move-here/$wallpaper/"); 

rename("/path-to-folder/original/".intval($wallpaper)."/","/path-to-folder/move-here/".intval($wallpaper)."/"); 
+0

它仍然每次移動2個文件夾hmmmm – Sunny

0

你的腳本工作正常,我只是測試它,它只能移動一個文件夾。 檢查你的腳本是否沒有被執行過兩次。

<?php 
$wallpapers = array_map('basename',glob("./folder1/*",GLOB_ONLYDIR)); 
natsort($wallpapers); 
$wallpaper = $wallpapers[0]; 
if (empty($wallpaper)) { 
    echo "0 folders in that directory"; 
    die(); 
} 
if (!file_exists("./folder1/$wallpaper")) { 
    echo "folder does not exist"; 
    die(); 
} 
echo "moved folder: $wallpaper"; 
rename("./folder1/$wallpaper/","./folder2/$wallpaper/"); 


$data = scandir("./folder2/"); 
echo "<pre>";print_r($data); 

掃描目錄的結果:

Array 
    (
     [0] => . 
     [1] => .. 
     [2] => 1 
    ) 
+0

是的,這就是問題:) – Sunny

+0

也許你可以使用var_dump(debug_backtrace());看看這個代碼被調用的地方 – mbouzahir

相關問題