簡體   English   中英

需要顯示目錄-php中有限數量的文件名

[英]Require to display limited number of file names from directories -php

對於以下代碼,我有多個目錄和文件。 我可以為每個目錄顯示一個文件名(使用“ BREAK”比較好)。

<?php
    $dir = "/images/";
    $i=0;
    // Open a directory, and read its contents
    if (is_dir($dir)){
        if ($dh = opendir($dir)){
            while (($file = readdir($dh)) !== false){
                echo "filename:" . $file . "<br>";
                break;
                //---- if ($i>=5) { break; }
            }
            closedir($dh);
        }
    }
?>

if ($i>=5) { break; } if ($i>=5) { break; }我仍然可以顯示文件名5,但它只能讀取一個目錄。

我想在所有目錄中至少顯示5個文件名,該怎么辦?

使用scandir函數。

array scandir ( string $directory [, int $sorting_order = SCANDIR_SORT_ASCENDING [, resource $context ]] )

要么

如果您使用的是Unix,還可以進行系統調用並運行以下命令。

ls / $ dir | 頭-5

$dir是目錄, -5是目錄中的數字文件名。

由於您說過您有多個目錄,因此我重新編寫了一下代碼:

(在這里,我首先使用array_map()遍歷所有目錄,然后使用glob()從每個目錄中獲取所有文件。之后,我僅使用array_slice()限制每個目錄中的文件,最后我只打印所有文件名)

<?php

    $directorys = ["images/", "xy/"];
    $limit = 3;

    //get all files
    $files = array_map(function($v){
        return glob("$v*.*");
    }, $directorys);

    //limit files per directory
    $files = array_map(function($v)use($limit){
        return array_slice($v, 0, $limit);
    }, $files);

    foreach($files as $directory) {
        echo "<b>Directory</b><br>";
        foreach($directory as $file)
            echo "$file<br>";
        echo "<br><br>";
    }

?>

您不必破壞它,您可以跳過它。 並在這樣做,你必須使用continue代替。

$dir = "/images/";
$i=0;

// Open a directory, and read its contents
if (is_dir($dir)){
    if ($dh = opendir($dir)){
        while (($file = readdir($dh)) !== false){
            echo "filename:" . $file . "<br>";

            if ($i>=5)
                   continue;

        }
        closedir($dh);
    }
}

這也是另一種情況。 因為您提到您有很多目錄,但是只顯示一個主目錄,所以我猜您提到的目錄在/images/目錄中。

$dir = "images/";
$i=1;

// Open a directory, and read its contents
if (is_dir($dir)){
    if ($dh = opendir($dir)){
        while (($file = readdir($dh)) !== false){

            $j=1;

            if (is_dir($file)) {
                if ($internalDir = opendir($file)) {
                    while (($internalFile = readdir($internalDir)) !== false) {
                        echo $file."->filename: ".$internalFile."<br>";

                        if ($j>=5)
                               continue;

                        $j++;
                    }

                    closedir(opendir($file));
                }

            } else {
                echo "filename:" . $file . "<br>";

                if ($i>=5)
                   continue;

                $i++;
            }


        }
        closedir($dh);
    }
}

在此處閱讀有關continue更多信息: http : //php.net/manual/en/control-structures.continue.php

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM