Количество элементов массива, возвращаемых функцией scandir(); PHP

У меня в папке "файлы" несколько папок. Я хочу вернуть количество этих папок по моему php-коду:

$x = count(scandir('/files'));
echo $x;

Но это не работает. Что случилось?


person Artimal    schedule 06.01.2016    source источник
comment
Каков результат var_dump($x)?   -  person maxhb    schedule 06.01.2016
comment
Есть ли у пользователя apache необходимые разрешения для папки /files?   -  person Athanasios Kataras    schedule 06.01.2016
comment
это не работает что означает? Ошибки? Неверный счет? Пустой вывод?   -  person trincot    schedule 06.01.2016


Ответы (3)


Если у вас есть файлы в папке files, вот решение.

  $directory = 'files/';
  $scanned_directory = array_diff(scandir($directory), array('..', '.'));//to remove dots
  $x = count($scanned_directory);
  echo $x;

Старайтесь не использовать /files. Он будет искать файл с именем files.

person A J    schedule 06.01.2016

Попробуй это:

$directory = '/your/directory/path/';
$files = glob($directory . '*.*');   // returns an array on success and false on error.

if ( $files !== false )
{
    $filecount = count( $files );
    echo $filecount;
}
else
{
    echo 0;
}
person Jayesh Patel    schedule 06.01.2016

лучше сначала проверить, существует ли каталог:

$directory = '/your/directory/path/';
if(!is_dir($directory))
    die("direction not exists");

Затем муравей подсчитывает и удаляет элементы . и ..

person Mojtaba Hn    schedule 06.01.2016