#php
#php
Вопрос:
В папке «изображения» у меня есть тысяча XML-файлов.Я хочу, чтобы эти имена файлов были вставлены в массив $images = array('','');
Вместо того, чтобы записывать их все вручную, и эта папка будет часто обновляться, как я могу сделать это автоматически?
Ответ №1:
Просто исключите записи .
и ..
, если они вам не нужны:
$files = array_diff( scandir($dir), array('.','..') );
Комментарии:
1. Когда я устанавливаю файлы вручную в массив, скрипт работает. Однако с этим этого не происходит.
2. @mtopia: «Не работает» довольно сложно отлаживать. Что именно вы делаете, и что в этом не так?
3. Хорошо, и что произойдет, если вы заполните массив, используя предложенный мной код? (Кстати, если ваши файлы всегда имеют суффикс .xml, вы можете просто воспользоваться предложением Марка Б. и сделать
glob("$dir/*.xml")
.)4. @mtopia: Ах, я думаю, я знаю, в чем может быть проблема: выходные
scandir($dir)
данные включают только имена файлов. Вам нужно добавить к ним свой префикс,"$dir/"
прежде чем передавать их чему-либо, кому нужен полный путь к файлу.
Ответ №2:
.
и ..
всегда присутствуют во ВСЕХ каталогах («текущий каталог» и «родительский каталог» соответственно). Вы должны специально отфильтровать их. Однако, поскольку вам нужны только изображения, вы могли бы использовать что-то вроде glob()
простого извлечения изображений с использованием обычных шаблонов подстановочных знаков оболочки, например
$files = glob('*.jpg');
что даст вам все файлы, имена которых заканчиваются на .jpg
.