在 PHP 中判断文件是否存在,可以使用 is_file 或 file_exists;判断文件夹是否存在,可以使用:is_dir 和 file_exists,即 file_exists = is_dir + is_file。三者实现的功能相同,下面就从效率方面对比一下:
file_exists、is_file、is_dir 效率对比:
文件存在(当前目录):is_file:0.4570ms、file_exists:2.0640ms
文件存在(/www/www.02405.com/a/):is_file:0.4909ms、file_exists:3.3500ms
文件存在(/www/www.02405.com/a/b/c/):is_file:0.4961ms、file_exists:4.2100ms
文件不存在(当前目录):is_file:2.0170ms、file_exists:1.9848ms
文件不存在(/www/www.02405.com/a/b/c/):is_file:4.1909ms、file_exists:4.1502ms
目录存在:file_exists:2.9271ms、is_dir:0.4601ms
目录不存在:file_exists:2.9719ms、is_dir:2.9359ms
文件存在的情况下,is_file比file_exists要快得多;
文件不存在的情况下,is_file比file_exists要慢一点点,但可以忽略不计。
目录存在的情况下,is_dir比file_exists要快得多;
目录不存在的情况下,is_dir比file_exists要慢一点点,但可以忽略不计。
结论:
如果要判断文件是否存在,用函数 is_file(),如果要判断目录是否存在,用函数 is_dir(),只有在不知道判断对象是文件还是目录时,使用 file_exists()
来源:https://www.02405.com/archives/2355
