Я использую scandir () для поиска файлов рекурсивно. Но если путь к файлу направляется в файл, а не в папку, появится предупреждение. Как я могу проверить путь, направляет ли он файл или папку?
enter code here <?php $path = "C:\\test_folder\\folder2\\folder4"; $sub_folder = scandir($path); $num = count($sub_folder); for ($i = 2; $i < $num; $i++) { ...//if $sub_folder[$i] is a file but a folder, there will be a warning. How can I check $sub_folder[$i] before use it? } ?>
Благодаря!
Посмотрите is_dir () и is_file ()
<?php $path = "C:\\test_folder\\folder2\\folder4"; $sub_folder = scandir($path); $num = count($sub_folder); for ($i = 2; $i < $num; $i++) { if(is_file($path.'\\'.$sub_folder[$i])){ echo 'Warning'; } } ?>
is_dir () должен сказать вам, является ли путь каталогом или нет.
Вы также можете использовать DirectoryIterator ( класс )
$path = 'your path'; $dir = new DirectoryIterator(realpath($path)); foreach ($dir as $fileInfo) { if($fileInfo->isFile()) { // it's a file } }
Кроме того, вы можете проверить is_file и is_dir .
Вы можете проверить, имеет ли переменная расширение файла или нет.
Это «если» будет получать только файлы:
if (pathinfo($file, PATHINFO_EXTENSION))
и это «если» будет получать только каталоги:
if (!pathinfo($file, PATHINFO_EXTENSION))