Чтение каталогов
После того как мы получили дескриптор, можно использовать его для просмотра содержимого каталога или, по-другому, его чтения (листинг 11.17).
Листинг 11.17. Чтение каталога
<html>
<head>
<title> Чтение каталога </title>
</head>
<body>
<?php
// открытие каталога
$dir_pointer = opendir(".");
// чтение каталога
while (($res = readdir($dir_pointer))!==FALSE)
{
// вывод имен файлов и папок
echo $res."<br>";
}
// закрытие каталога
closedir($dir_pointer);
?>
</body>
</html>
В этом примере используется функция readdir(). Она принимает дескриптор каталога, возвращает строку с именем файла (включая расширение) или подкаталога. При последующих вызовах мы будем получать другие имена до тех пор, пока все элементы каталога не будут перебраны. В этом случае функция возвратит значение FALSE. Порядок вывода будет зависеть от файловой системы.
Обратите внимание, что в цикле while мы использовали оператор !== (операнды не эквивалентны), а не != (операнды не равны). Делается это по следующей причине. Допустим, что среди имен файлов и подкаталогов имеется такое: 0. В этом случае при использовании оператора != выполнение цикла прекратилось бы раньше времени.
Однако разработчики РНР посчитали, что данный способ чтения каталогов является громоздким. Поэтому в пятой версии появляется новая функция scandir(). Она принимает дескриптор каталога и возвращает массив, элементы которого содержат имена файлов и подкаталогов (листинг 11.18).
Листинг 11.18. Вывод содержимого каталога
<html>
<head>
<title> Вывод содержимого каталога </title>
</head>
<body>
<pre>
<?php
// родительский каталог
$dir = "..";
$arr = scandir($dir);
// вывод массива
print_r($arr);
?>
</pre>
</body>
</html>
Сортировка массива производится в алфавитном порядке по возрастанию. Однако имеется возможность это изменить с помощью необязательного параметра. Если его указать равным единице, то сортировка массива будет производиться в алфавитном порядке по убыванию (листинг 11.19).
Листинг 11.19. Вывод содержимого каталога в алфавитном порядке по убыванию
<html>
<head>
<title> Вывод содержимого каталога в алфавитном порядке по убыванию </title>
</head>
<body>
<pre>
<?php
// родительский каталог
$dir = "..";
$arr = scandir($dir, 1);
// вывод массива
print_r($arr);
?>
</pre>
</body>
</html>
Другие на сайте, сейчас читают:
Прописка в Химках – это штамп в паспорте, который подтверждает ваше проживание на территории Химок Московской области. Чтобы получить прописку в Химках, необходимо обратиться в местное отделение миграционной службы или в МФЦ. Для этого потребуется предоставить определенные документы, которые вам поможет составить юристы фирмы Журавлев С.В. Получив прописку, человек может воспользоваться всеми социальными и гражданскими правами и льготами, предоставляемыми городскими учреждениями и органами власти.