我的代码没有提取目录中的所有文件,我不知道为什么,我没有任何扩展限制或任何东西,确定所以这是我的代码我做错了什么?有jpg和png扩展的24个图像,当我print_r($arr)
时只检测到13个
:
<?php
function loadimages($dir) {
if(substr($dir, -1) != "/") $dir .= "/";
$rootdir = $_SERVER["DOCUMENT_ROOT"];
$fulldir = $rootdir."/".$dir;
$dir = opendir($fulldir);
$arr = array();
while(readdir($dir)) {
$arr[] = readdir($dir);
}
echo "<h1>".count($arr). "</h1><br />";
foreach($arr as $img) {
echo "<img src='/pages/course-images/{$img}' />";
}
}
loadimages("pages/course-images");
?>
答案 0 :(得分:1)
我会改用glob()
。
$images = glob('*.{png,jpg}', GLOB_BRACE);
print_r($images);
http://php.net/manual/en/function.glob.php
它不起作用,因为while(readdir($dir))
,然后您读取一个值并向前跳过一步到下一个文件。正确的方法就是这样,而且它是手册中的解释。
while(false !== ($entry = readdir($dir))) {
$arr[] = $entry;
}
http://php.net/manual/en/function.readdir.php
但是glob更好,现在它只返回图像。