1

我在 iPad 应用程序中有一个包含很多图像的文件夹。尝试创建一个自动化的 php 脚本来检查文件夹中的所有图像是否具有配对的非视网膜和视网膜图像集。如果视网膜图像不存在,则显示一条消息,内容如下:“Missing: $filename”,其中 $filename 是值...我不知道如何比较通过 glob 抓取的图像数组( ):

首先,我从文件夹中获取 jpg 或 png 的图像:

$images = glob("ipad/{*.jpg,*.png}", GLOB_BRACE);

现在我想检查这个图像数组以显示丢失的@2x 图像集......我正在阅读你可以使用 array_filter 但不太明白如何做到这一点......

任何想法如何实现这一点,然后用 foreach "Missing: $filename" 回显它们

4

2 回答 2

1

您可以使用以下内容:

$path = __DIR__;
$all = glob("$path/*.{jpg,png}", GLOB_BRACE);

$normal = $retina = array();

// Group Images
foreach($all as $v) {
    strpos($v, '@2x') === false and $normal[basename($v)] = $v;
    strpos($v, '@2x') !== false and $retina[basename($v)] = $v;
}

foreach($normal as $image) {
    $v = pathinfo($image);
    $name = $v['filename'] . '@2x.' . $v['extension'];
    if (! isset($retina[$name])) {
        echo "Missing: $name\n";
    }
}
于 2013-05-08T12:31:32.293 回答
0

这样的事情应该做:

var_dump(array_filter(glob('ipad/{*.jpg,*.png}', GLOB_BRACE), function ($file) {
    $info = pathinfo($file);
    return !preg_match('/@2x$/', $info['filename'])
        && !file_exists("$info[dirname]/$info[filename]@2x.$info[extension]");
}));
于 2013-05-08T12:26:00.067 回答