0

How can I show a folder's limit in a directory using PHP? The code below shows all folders but I only want to see 10 folders.

function folderlist() {
  $startdir = './';
  $ignoredDirectory[] = '.';
  $ignoredDirectory[] = '..';
  if(is_dir($startdir)) {
    if($dh = opendir($startdir)) {
      while(($folder = readdir($dh)) !== false) {
        if(!(array_search($folder, $ignoredDirectory) > -1)) {
          if(filetype($startdir.$folder) == "dir") {
            $mtime = filemtime($startdir.$folder);
            $directorylist[$mtime]['name'] = $folder;
            $directorylist[$mtime]['path'] = $startdir;
          }
        }
      }

      closedir($dh);
    }
  }

  krsort($directorylist, SORT_NUMERIC);
  return $directorylist;
}

$folders = folderlist();
foreach($folders as $folder) {
  $path = $folder['path'];
  $name = $folder['name'];

  echo '<div class="urbangreymenu"><ul><li><a href="'.$path.'index.php?wallpapers='.$name.'" target="_parent">'.$name.'</a></li></ul></div>';
}
hexacyanide
  • 88,222
  • 31
  • 159
  • 162
user1796164
  • 131
  • 1
  • 4
  • 14

1 Answers1

2

Change three lines:

function folderlist($limit = 10) {

and ...

while (($folder = readdir($dh)) !== false && $limit) {

and...

$limit--;

Together:

function folderlist($limit = 10) {
    $startdir = './';
    $ignoredDirectory[] = '.'; 
    $ignoredDirectory[] = '..';
    if (is_dir($startdir)) {
        if ($dh = opendir($startdir)) {
            while (($folder = readdir($dh)) !== false && $limit) {
                if (!(array_search($folder,$ignoredDirectory) > -1)) {
                    if (filetype($startdir . $folder) == "dir") {
                        $mtime = filemtime($startdir . $folder);
                        $directorylist[$mtime]['name'] = $folder;
                        $directorylist[$mtime]['path'] = $startdir;
                        $limit--;
                    }
                }
            }
            //Rest of code unchanged...
Scott Yang
  • 2,348
  • 2
  • 18
  • 21