我在此路径中具有“ AAA / BBB / CCC / DDD / test ”之类的路径,我想使用以下方法删除最后一个文件夹“ / test ” PHP。我已经尝试了以下代码。
代码
$dirname = 'AAA/BBB/CCC/DDD/test'
remove_directory();
function remove_directory() {
rmdir($dirname)
}
谢谢。
答案 0 :(得分:2)
您需要将变量传递给函数:
$dirname = 'AAA/BBB/CCC/DDD/test'
remove_directory($dirname);
function remove_directory($dirname) {
rmdir($dirname)
}
当然,如果您的函数只有一行,那么您可以简单地使用内置的PHP函数,而不必定义自己的函数来完成相同的工作。
我强烈建议您花几分钟时间阅读manual page on variable scope。
答案 1 :(得分:2)
使用basename()
功能:这将为您提供所需的文件夹名称。
$dirname = 'AAA/BBB/CCC/DDD/test';
function remove_directory($dirname) {
$dirname = basename($dirname);
rmdir($dirname);
}
remove_directory($dirname);
答案 2 :(得分:2)
完整路径是什么?由于您没有使用Windows上的C:\
或Linux上的/
开头的路径,因此您尝试删除相对于当前工作目录的目录。这可能不会评估您要删除的目录。
如果要在函数内部访问$dirname
变量,则必须使用global关键字。但是更好的做法是将目录作为变量传递给函数。
此外,作为一种很好的实践,在尝试调用该函数之前,应该具有该函数的实现。通常,这并不重要,但是有一些例外,特别是当函数的存在以要执行的其他代码为条件时。
答案 3 :(得分:1)
这里的问题是您创建了不带参数的函数remove_directory()
。因此,函数$dirname
中的变量没有内容,因为它超出了最初定义它的范围。可能的解决方案是抛弃该函数并编写以下代码:
$dirname = 'AAA/BBB/CCC/DDD/test'¨
rmdir($dirname)
或更正您的错误:
$dirname = 'AAA/BBB/CCC/DDD/test'
remove_directory($dirname);
function remove_directory($dirname) {
rmdir($dirname)
}