数组切片似乎不起作用

时间:2013-08-23 16:52:03

标签: php

我正在尝试将第一个文件放在按名称asc排序的目录中。这是我使用的代码(php):

 $dir = "fichiers/123/files_backup";
$premfic = array_slice(array_filter(scandir($dir), 'is_file'), 0, 5);
print_r($premfic);

但是数组是空的...该目录包含18个文件,scandir单独看到它们。任何的想法? 感谢

1 个答案:

答案 0 :(得分:5)

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指出的那样(因为glob返回相对路径,而不仅仅是文件名):

$premfic = array_slice(array_filter(glob($dir . '/*'), 'is_file'), 0, 5);