我可以用一些帮助。我必须从一个目录获取文件列表,并将它们作为数组返回,但键必须与值相同,因此输出将如下所示:
array(
'file1.png' => 'file1.png',
'file2.png' => 'file2.png',
'file3.png' => 'file3.png'
)
我找到了这段代码:
function images($directory) {
// create an array to hold directory list
$results = array();
// create a handler for the directory
$handler = opendir($directory);
// open directory and walk through the filenames
while ($file = readdir($handler)) {
// if file isn't this directory or its parent, add it to the results
if ($file != "." && $file != "..")
{
$results[] = $file;
}
}
// tidy up: close the handler
closedir($handler);
// done!
return $results;
}
它工作正常,但它返回常规数组。
有人可以帮我这个吗?
最后还是小记,我只需要列出图像文件(png,gif,jpeg)。
答案 0 :(得分:5)
更改以下行
$results[] = $file;
要
$results[$file] = $file;
限制文件扩展名如下
$ext = pathinfo($file, PATHINFO_EXTENSION);
$allowed_files = array('png','gif');
if(in_array($ext,$allowed_files)){
$results[$file] = $file;
}
答案 1 :(得分:0)
这样的事情应该是工作
$image_array = [];
foreach ($images as $image_key => $image_name) {
if ($image_key == $image_name) {
$image_array[] = $image_name;
}
return $image_array;
}
答案 2 :(得分:0)
为什么不使用glob和array_combine?
function images($directory) {
$files = glob("{$directory}/*.png");
return array_combine($files, $files);
}
答案 3 :(得分:-1)
现在在我的脚本上执行此操作
$scan=scandir("your image directory");
$c=count($scan);
echo "<h3>found $c image.</h3>";
for($i=0; $i<=$c; $i++):
if(substr($scan[$i],-3)!=='png') continue;
echo "<img onClick=\"javascript:select('$scan[$i]');\" src='yourdirectory/$scan[$i]' />";
endfor;
此代码仅列出目录中的png图像。