将两组文件阵列相互比较

时间:2012-05-22 14:50:59

标签: php html

我是php的新手,我正在创建一个图片库。我写的代码工作,它运作良好,但我需要上传文件到服务器。该图库的工作原理是将缩略图图像加载到页面上,当点击缩略图时,弹出的fancybox将会打开并显示缩略图的高分辨率版本。

文件夹结构中有2个图像。照片和/ gfx /照片/拇指中的照片和缩略图。我正在尝试编写一个PHP脚本,检查是否已将新照片添加到/ gfx / photos /文件夹,并自动在/ gfx / photos / thumb文件夹中创建缩略图。我可以做调整大小部分,但我需要帮助比较2个文件相互之间。缩略图和照片的名称完全相同,只是它们位于不同的位置。

我有一个像这样工作的图像数组:

<?PHP
    $dir = "gfx/photos/thumbs";
    $files = scandir($dir);

    foreach ($files as $key => $value);
    $result = count($files);
    for ($i = 0; $i < $result; $i++) {
      /* loads appropriate code for every file... */
    }

?>

这段代码可以用来互相检查文件,还是应该使用不同的代码。

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

这是获得此结果的一种简单方法,只要目录没有填满数百万张图像,这种方法就会很好用,但如果你能够拥有数百万张图像,那么你应该把它们分解成更小的目录。

由于scandir返回一个整数索引数组,你通常需要进行一些数组搜索才能找到你的图像。然而。如果您使用array_flip执行此操作:

$image_name = "some_image.jpg";

$dir = "gfx/photos/thumbs";
$files = scandir($dir);

$files = array_flip($files); // makes the values = to keys and keys = values

// now you have an 0(1) look up table that you can simply check if the key exists
// which, now that we flipped the array, are the file names
if(!isset($files[$image_name])){
    // create the thumbnail etc
}