2012-03-24 4 views
1

여러 개의 하위 디렉토리가있는 하나의 디렉토리가 있습니다. 각 디렉토리에서 마지막으로 하나의 업로드 된/수정 된 flv를 가져 와서 출력 할 수있는 형식화 된 목록을 만들 수 있기를 원합니다.여러 개의 디렉토리 중 마지막 파일 업로드

이전에 glob 및 foreach를 사용하여 폴더 항목 목록을 만들었지 만이를 수행하는 방법을 모르거나 여러 하위 디렉토리에서 하나의 파일 만 반환합니다.

도움이 되겠습니다.

고맙습니다! http://php.net/manual/en/class.directoryiterator.php :

+0

에 대한 잠금 있습니다. 그런 다음 각 파일을 검토하고 DirectoryIterator :: getMTime()을 사용하여 수정 된 시간을 가져오고 비교 한 다음 가장 최근에 수정 한 파일을 선택합니다. – F21

+0

그게 내가 마지막으로 수정 한 전체 dir 또는 마지막으로 각 하위 디렉토리에서 수정 된 것입니까? 각 하위 디렉토리에서 마지막으로 수정 된 것을 가져 와서 그 중 목록을 만들려고합니다. – DA69

+0

반복기를 사용하면 iterator가 가리키는 대상에 따라 디렉토리 또는 파일의 수정 된 시간을 가져올 수 있습니다. – F21

답변

1
<?php 
$result = array(); 
foreach (new DirectoryIterator('/path/to/dir') as $item) { 
    if (!$item->isDot() && $item->isDir()) { 
     $result[$item->getFilename()] = $m = null; 
     foreach (new DirectoryIterator($item->getPathname()) as $subItem) { 
      if ($subItem->isFile() && $m < $subItem->getMTime()) { 
       $result[$item->getFilename()] = $subItem->getFilename(); 
       $m = $subItem->getMTime(); 
      } 
     } 
    } 
} 
+0

이 스크립트를 사용하려고하는데이 스크립트가있는 폴더와 listing이라는 폴더가 있습니다. 내부 목록은 파일이 들어있는 세 개의 폴더입니다. 목록에 전화를 걸면 스크립트 바로 옆에 '/ listing'이 표시됩니까? 지금은 아무 것도 보여주지 않습니다 ... 아이디어? – DA69

+0

nm, 나는 그것을 작동시켰다. .. 굉장한! 고맙습니다!! – DA69

0

당신은 당신이 당신의 디렉토리를 반복하는 DirectoryIterator을 사용할 수 있습니다 filemtime

+0

글쎄, 시간을 줄 수있는 곳을 볼 수는 있지만 멀티 서브 디렉토리에서 파일 목록을 어떻게 만들 수 있는지 알려주지 않습니다. – DA69

+0

여기 있습니다 : http://php.net/manual/en/class.recursivedirectoryiterator.php – haltabush