如果文件夹为空,我想创建一个包含一些信息的文件。 这是我的脚本:
$fileList = glob('tpe*');
if (count(glob('$fileList/*')) == 0 ) {
$key = 'index.html';
$person = "<title> En cours </title> <p> Le site est en cours </p>";
file_put_contents($key, $person, FILE_APPEND | LOCK_EX);
}
问题是它在当前目录而非空目录中创建了我。
感谢您的帮助;)
答案 0 :(得分:0)
您的代码中有一些错误。
首先,当您在glob('$fileList/*')
中使用单引号时,它是文字字符串$fileList/*
。没有变量替代。
如果要将$fileList
值放入随后的字符串中,则需要使用双引号(glob("$fileList/*")
)或串联(glob($fileList . '/*')
)< / p>
下一个错误是glob()
返回数组,所以$fileList
是一个数组,这意味着您不能简单地将其放入字符串中。
现在,根据您真正想做的事情,您可能想从glob()
中获取任何特定结果,或者遍历所有这些结果,然后对它们中的每一个进行所需的操作。
我假设您要在每个匹配的空目录中创建index.html
。
因此它将是:
foreach($fileList as $filePath) {
if (count(glob("$filePath/*")) == 0 ) {
// rest of code
}
}
现在,您有问题的线索了。将内容放入当前目录的index.html
文件中,因为您没有告诉file_put_contents
在哪里做。
第一个参数是 path ,而不仅仅是文件名。因此,当您传递index.html
值时,它是当前目录的相对路径。
您需要通过整个路径,大概是$filePath . "/index.html"
,所以它将是:
$key = $filePath . "/index.html";
最后,我想指出,您可能需要其他验证,例如,如果匹配的路径确实是目录。在相对路径上工作也有些冒险。最好依靠绝对路径。
答案 1 :(得分:0)
第3行,而不是
$key = 'index.html';
您应该使用:
$key = $fileList[0].'/index.html';
它将在该文件夹中创建文件,而不是在当前目录中。