我想要在名稱按順序排列的目錄中的第一個文件。下面是我使用的代碼(PHP):數組切片似乎並不工作
$dir = "fichiers/123/files_backup";
$premfic = array_slice(array_filter(scandir($dir), 'is_file'), 0, 5);
print_r($premfic);
但數組是空的...該目錄包含18號文件和單獨SCANDIR看到他們。任何想法? 謝謝
我想要在名稱按順序排列的目錄中的第一個文件。下面是我使用的代碼(PHP):數組切片似乎並不工作
$dir = "fichiers/123/files_backup";
$premfic = array_slice(array_filter(scandir($dir), 'is_file'), 0, 5);
print_r($premfic);
但數組是空的...該目錄包含18號文件和單獨SCANDIR看到他們。任何想法? 謝謝
is_file
將無法正常工作,因爲您目前不在"fichiers/123/files_backup"
。以下都應該工作:
chdir($dir);
$premfic = array_slice(array_filter(scandir('.'), 'is_file'), 0, 5);
// You may want to chdir back to your previous directory
// You can use getcwd() before your chdir() to dynamically determine it
或者:
$premfic = array_slice(array_filter(scandir($dir), function($filename) use ($dir){
return is_file($dir . '/' . $filename);
}), 0, 5);
或者作爲OrangePill指出的(因爲水珠返回相對路徑,而不僅僅是文件名):
$premfic = array_slice(array_filter(glob($dir . '/*'), 'is_file'), 0, 5);
也可以接受'glob(「fichiers/123/files_backup/*」);' – Orangepill
@Orangepill謝謝,我已經將該選項添加到我的答案中。 – Paulpro
'無法打開目錄:沒有這樣的文件或目錄':-( – user2670167
Woudl有用看到你的'is_file'函數? – RiggsFolly
@RiggsFolly is_file是一個默認的php函數,不是嗎? – StephenTG
注意scandir不會返回文件的完整路徑,只有文件名,所以過濾器將刪除當前工作目錄中沒有文件名的任何文件。 – Orangepill