2013-06-24 111 views
-2

這是我的代碼將目錄中的所有文件移動到另一個1小時或更長的目錄。意外的'{'與IF語句

<?php 
$srcDir = 'code'; 
$destDir = 'code/old'; 

if (file_exists($destDir)) { 
    if (is_dir($destDir)) { 
    if (is_writable($destDir)) { 
     if ($handle = opendir($srcDir)) { 
     while (false !== ($file = readdir($handle))) { 
      if (is_file($srcDir . '/' . $file)) { 
       if(date("U",filectime($srcDir . '/' . $file) >= time() - 3600) { 
       rename($srcDir . '/' . $file, $destDir . '/' . $file); 
       } 

      } 
     } 
     closedir($handle); 
     } else { 
     echo "$srcDir could not be opened.\n"; 
     } 
    } else { 
     echo "$destDir is not writable!\n"; 
    } 
    } else { 
    echo "$destDir is not a directory!\n"; 
    } 
} else { 
    echo "$destDir does not exist\n"; 
} 
?> 

和我收到此錯誤:

Parse error: syntax error, unexpected '{' in /home/tcity/public_html/myDir/movefiles.php on line 11 
+0

你的文件,這行是行號#11? – Fallen

+1

哇。我沒有話語​​。 –

+0

通常缺少括號。然而,看看你自己。 – mario

回答

5

你缺少一個右括號這裏:

if(date("U",filectime($srcDir . '/' . $file) >= time() - 3600) { 
              ^

你還需要學會使用&&運算符邏輯組合聲明。儘管,似乎你想提供反饋。過度的嵌套難以閱讀。如果你想單獨進行所有這些測試,那麼這個怎麼樣:

if (!file_exists($destDir)) 
{ 
    echo "$destDir does not exist\n"; 
} 
elseif (!is_dir($destDir)) 
{ 
    echo "$destDir is not a directory!\n"; 
} 
elseif (!is_writable($destDir)) 
{ 
    echo "$destDir is not writable!\n"; 
} 
elseif (...) 
{ 

} 
else 
{ 
    while (...) { 
    } 
} 
+0

愚蠢的我..我已經算過括號,但數了他們錯了..我想我是困難,因爲它上午3:30反正..謝謝,但有一個問題。腳本正在移動所有的文件,甚至是那些在一分鐘前創建的文件..我在哪裏犯錯? –

+0

您正在減去一小時的時間,因此它會移動一小時前創建的所有文件。匹配括號的一個好方法就是這樣計算:從0開始,當看到'(',當看到'''時減1「)時加1。如果你最終沒有回到0,你會錯過一些東西(負數=缺少'(',正數=缺少'''')。 – paddy

0

你錯過了一個右括號。

if(date("U",filectime($srcDir . '/' . $file) >= time() - 3600) { 

成爲

if(date("U",filectime($srcDir . '/' . $file)) >= time() - 3600) { 

這是未經測試

1

旁邊的事實,你已經錯過了date()函數調用結束paranthesis,你也應該考慮格式化你的代碼更好,這只是太難看,並發現一個錯誤(你覺得它在你的皮膚上)。 寫一個函數來爲你做的工作:

function pleaseDontMakeFunOfTheOtherDevelopers($srcDir, $destDir) { 
    if (!is_dir($srcDir)) { 
     return "$destDir does not exist\n"; 
    } 
    if (is_writable($destDir)) { 
     return "$destDir is not writable!\n"; 
    } 

    if (!($handle = opendir($srcDir))) { 
     return "$srcDir could not be opened.\n"; 
    } 

    while (false !== ($file = readdir($handle))) { 
     if (is_file($srcDir . '/' . $file) && date("U", filectime($srcDir . '/' . $file)) >= time() - 3600) { 
     rename($srcDir . '/' . $file, $destDir . '/' . $file); 
     } 
    } 
    closedir($handle); 

    return true; 
} 

L.E:想這是很清楚,你應該重命名功能:)

+0

你甚至可以再走一步:'if(!is_dir($ srcDir))return「$ destDir does not exist \ n」;' – Ronnie