2017-02-04 5 views
1

Есть ли эффективный способ подсчета файлов внутри одной папки, внутри которой есть больше файлов и подпапок?Как подсчитать файлы внутри папок и подпапок с помощью PHP

Я пробовал что-то вроде этого, все еще не дал мне нужного номера. Windows распознает 159 файлов внутри папки «Изображения». Когда я получаю только 144

<?php 
$img = count(glob("./assets/images/*.*")); 
$about = count(glob("./assets/images/aboutus/*.*")); 
$blog1 = count(glob("./assets/images/blog/*.*")); 
$mason = count(glob("./assets/images/blog/masonary/*.*")); 
$tl = count(glob("./assets/images/blog/timeline/*.*")); 
$blog2 = count(glob("./assets/images/blogdetails/*.*")); 
$gallery = count(glob("./assets/images/gallery/*.*")); 
$home = count(glob("./assets/images/home/*.*")); 
$keg = count(glob("./assets/images/kegiatan/*.*")); 
$port1 = count(glob("./assets/images/portfolio/*.*")); 
$port2 = count(glob("./assets/images/portfolio-details/*.*")); 
$srv = count(glob("./assets/images/services/*.*")); 
$usr = count(glob("./assets/images/users/*.*")); 
$count = $img+$about+$blog1+$mason+$tl+$blog2+$gallery+$home+$keg+$port1+$port2+$srv+$usr; 
?> 

Помощь?

EDITED: Выполнено. Мои ошибки. Я не учитывал подпапки в определенной папке.

Но все же, есть ли способ сделать это коротким?

+0

С 'recursivedirectoryiterator' может быть? –

+0

Если вам что-то помогло, вы должны отметить ответ на этот вопрос. Или ответьте на свой вопрос – SuperDJ

+0

Я все еще не понял –

ответ

0

Вот что вы можете попробовать. Вам все равно нужно изменить его, чтобы подсчитать файлы или подсчитать массив, который указан.

function getFromDir($dir) { 
    $cdir = scandir($dir); 
    $result = array(); 

    foreach($cdir as $key => $value) { 
     if(!in_array($value, array('.', '..'))) { 
      if(is_dir($dir . DIRECTORY_SEPARATOR . $value)) { 
       $result[$value] = getFromDir($dir . DIRECTORY_SEPARATOR . $value); 
      } else { 
       $result[] = $value; 
      } 
     } 
    } 

    return $result; 
} 

Если бы пройти "./assets/images/" как он должен В параметре получить все вложенные папки, а также.

Таким образом, вы в конечном итоге с чем-то вроде:

$count = count(getFromDir("./assets/images/")); 
+0

Я не знаю, как реализовать это в Codeigniter –

+0

Возможно, вам стоит задать второй вопрос об этом с помощью Codeigniter. Не обновляйте этот вопрос, поскольку он не будет замечен многими людьми, потому что он уже глубоко в списке вопросов – SuperDJ

Смежные вопросы