这是我的代码,用于将目录中的所有文件移动到1小时或更长的另一个目录。
<?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 :(得分: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 (...) {
}
}
答案 1 :(得分:1)
除了你错过了date()
函数调用的关闭问题之外,你还应该考虑更好地格式化你的代码,这太难以观察并发现错误(你觉得它在你的皮肤上)。
写一个函数为你完成这项工作:
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:猜测你应该重命名这个功能很清楚:)
答案 2 :(得分:0)
你错过了一个结束括号。
if(date("U",filectime($srcDir . '/' . $file) >= time() - 3600) {
变为
if(date("U",filectime($srcDir . '/' . $file)) >= time() - 3600) {
这是未经测试的