1

我可以在这方面使用一些帮助。我必须从一个目录中获取文件列表,并将它们作为数组返回,但 key 需要与 value 相同,因此输出将如下所示:

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)。

4

4 回答 4

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;
}
于 2012-10-13T08:10:06.060 回答
0

这样的事情应该对工作

$image_array = [];
foreach ($images as $image_key => $image_name) {
  if ($image_key == $image_name) {
     $image_array[] = $image_name; 
  }
  return $image_array;
}
于 2012-10-13T08:11:26.977 回答
0

为什么不使用globarray_combine

function images($directory) {
   $files = glob("{$directory}/*.png");
   return array_combine($files, $files);
}
  • glob() 根据标准模式(例如 *.png )获取目录中的文件
  • array_combine() 使用键数组和值数组创建关联数组
于 2012-10-13T08:23:19.750 回答
-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 图像。

于 2012-10-13T08:10:57.667 回答