PHP中的'.'和'..'含义是否与Linux一致?对应遍历代码如何理解
PHP中
./..含义与对应判断逻辑说明 PHP通过scandir()读取目录返回的.、..和Linux系统中的含义完全一致:
.代表当前被遍历的目录本身..代表当前被遍历目录的上级目录
判断逻辑的作用
scandir() 函数的默认返回结果中,一定会包含上述两个特殊目录项,它们不属于你需要处理的业务文件,必须过滤避免后续逻辑报错。
你贴出的判断代码:
if ($user == '.' || $user == '..') continue;
作用就是在遍历目录内容时,只要检测到是这两个特殊目录,就直接跳过本次循环的后续代码,不做处理。如果不做这层过滤,后续尝试用fopen打开目录、用unlink删除目录都会抛出PHP警告,导致逻辑异常。
完整代码的功能
你补充的完整代码实际作用为:
- 遍历
$room目录下的所有内容 - 过滤掉
.、..两个特殊目录 - 读取剩下每个文件中存储的时间戳
- 若当前时间和文件存储的时间差值超过20秒,就将该过期文件删除
内容的提问来源于stack exchange,提问作者Charles Haughey
相关产品推荐
相关产品推荐

