[英]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.