[英]Remove folders from php scandir listing
我有一個 php 腳本$filelist = scandir('myfolder/')
列出了我文件夾中的文件。 但它也將子文件夾添加到數組中,以便在我使用foreach
打印結果時也會填充它們。 我想刪除被添加到數組中的文件夾。 我怎樣才能做到這一點??
簡單的方法
$dir = 'myfolder/';
$filelist = scandir($dir);
foreach ($filelist as $key => $link) {
if(is_dir($dir.$link)){
unset($filelist[$key]);
}
}
如果您知道文件夾的名稱,您可以創建這些文件夾的數組,然后使用 array_diff 從結果中刪除它們:
$folders = array('..', '.', 'folder');
$files = array_diff(scandir($dir), $folders);
一個干凈簡潔的解決方案可能是使用array_filter排除所有像這樣的子目錄
$files = array_filter(scandir('directory'), function($item) {
return !is_dir('directory/' . $item);
});
這也有效地消除了.
和..
分別代表當前目錄和父目錄。
scandir 返回一個文件夾數組。 您可以像這樣刪除數組的任何元素:
unset( $filelist[0] );
其中 0 是您要刪除的元素的索引。 如果需要按名稱查找目錄,也可以使用 array_search()。
嘗試
<?php
$dir = "/example";
$filelist = new Array();
if (is_dir($dir)) {
if ($dh = opendir($dir)) {
while (($file = readdir($dh)) !== false) {
if (!is_dir($file)) {
$filelist[] = $file;
}
}
closedir($dh);
}
}
?>
這就像做一個scandir,但檢查返回文件的類型
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.