Как поместить файлы папки в массив?

#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 .