2017-10-24 3 views
4

これに少しだけ取り組み、助けを求めています。私は文字列内のパスから最後の変更されたdirを取得しようとしています。私は "is_dir"と呼ばれる機能があることを知っています。私はいくつかの調査を行っていますが、何もできないようです。php - 最後に変更されたディレクトリを取得

コードはありません。申し訳ありません。例えば

<?php 
$path = '../../images/'; 
// echo out the last modified dir from inside the "images" folder 
?> 

パス変数は、上記現在今「画像」ディレクトリ内の5つのサブフォルダを有しています。私は最後に変更されたフォルダである "sub5"をエコーアウトします。

+1

回答を別々に見つけた場合は、別の回答として投稿することはできますか(質問自体に編集するのではなく)? Stack OverflowのQ&Aサイトのフォーマットに沿ったものです。 – EJoshuaS

答えて

2

is_dir()の代わりにscandir()を使用できます。

ここは例です。

function GetFilesAndFolder($Directory) { 
    /*Which file want to be escaped, Just add to this array*/ 
    $EscapedFiles = [ 
     '.', 
     '..' 
    ]; 

    $FilesAndFolders = []; 
    /*Scan Files and Directory*/ 
    $FilesAndDirectoryList = scandir($Directory); 
    foreach ($FilesAndDirectoryList as $SingleFile) { 
     if (in_array($SingleFile, $EscapedFiles)){ 
      continue; 
     } 
     /*Store the Files with Modification Time to an Array*/ 
     $FilesAndFolders[$SingleFile] = filemtime($Directory . '/' . $SingleFile); 
    } 
    /*Sort the result as your needs*/ 
    arsort($FilesAndFolders); 
    $FilesAndFolders = array_keys($FilesAndFolders); 

    return ($FilesAndFolders) ? $FilesAndFolders : false; 
} 

$data = GetFilesAndFolder('../../images/'); 
var_dump($data); 

最後は、Files又はFoldersが昇順として表示される変形例上記から。

またis_dir()機能をチェックして、ファイルやフォルダを分離し、$FilesArray=[]$FolderArray=[]のような2つの異なる配列に結果を格納することができます。これは、ちょうど他の回答のように、あまりにも動作します

<?php 

// Get an array of all files in the current directory. 
// Edit to use whatever location you need 
$dir = scandir(__DIR__); 

$newest_file = null; 
$mdate = null; 

// Loop over files in directory and if it is a subdirectory and 
// its modified time is greater than $mdate, set that as the current 
// file. 
foreach ($dir as $file) { 
    // Skip current directory and parent directory 
    if ($file == '.' || $file == '..') { 
     continue; 
    } 
    if (is_dir(__DIR__.'/'.$file)) { 
     if (filemtime(__DIR__.'/'.$file) > $mdate) { 
      $newest_file = __DIR__.'/'.$file; 
      $mdate = filemtime(__DIR__.'/'.$file); 
     } 
    } 
} 
echo $newest_file; 
2

について

詳細はここでは、これを達成することができます一つの方法です。皆さん、助けをありがとう!

<?php 

    // get the last created/modified directory 

    $path = "images/"; 

    $latest_ctime = 0; 
    $latest_dir = '';  
    $d = dir($path); 

    while (false !== ($entry = $d->read())) { 
    $filepath = "{$path}/{$entry}"; 

    if(is_dir($filepath) && filectime($filepath) > $latest_ctime) { 
     $latest_ctime = filectime($filepath); 
     $latest_dir = $entry; 
    } 

    } //end loop 

    echo $latest_dir; 

    ?> 
関連する問題