В управлении файлами для перемещения файлов в другую папку я пытаюсь подсчитать количество файлов, которые уже существуют в папке.
foreach($checkboxfiles as $checkboxfile) {
$src_file = $checkboxfile;
$fileName = basename($src_file);
$new_dest = $_POST['cbdestination'];
/* New path for this file */
$dest_file = $MainFolderName.'/'. $new_dest . '/' . $fileName;
echo count(file_exists($dest_file)); //this should give me the number of files which already exists
Поскольку 2 файла уже существуют, эхо выдает
11
11
как вывод.
Как я могу получить число 2 в качестве вывода?
Кроме того, вы, скорее всего, получите не число 11, а число 1, повторенное дважды.






Вы используете count неправильно. file_exists возвращает true или false. count используется для счета arrays.
Для достижения желаемого вы можете:
$count = 0;
foreach($checkboxfiles as $checkboxfile) {
$src_file = $checkboxfile;
$fileName = basename($src_file);
$new_dest = $_POST['cbdestination'];
/* New path for this file */
$dest_file = $MainFolderName.'/'. $new_dest . '/' . $fileName;
if (file_exists($dest_file)){
$count++;
}
}
echo $count;
Вы можете подсчитать количество файлов в папке с помощью FilesystemIterator (требуется PHP 5 >= 5.3.0, PHP 7)
$fi = new FilesystemIterator('directory/location', FilesystemIterator::SKIP_DOTS);
printf("Number of files: %d ", iterator_count($fi));
Аккуратный метод, но не то, что хотел ОП. OP имеет список файлов и хочет проверить, сколько из них (если они есть) уже существуют в данном каталоге.
file_existsвозвращает true или false. Какой смысл считать результат этого?