我有一个ID列表
$Ids="1201,1240,1511,1631,1663,1666,1716,2067,2095";
并且在/imgs/
文件夹中有许多与这些ID相关的jpg文件名。但是有很多ID没有任何图像。
例如/ imgs /
1201_73.jpg
1201_2897.jpg
1240-9834.jpg
1240-24.jpg
1511-dsc984.jpg
1511-dsc34.jpg
我想要实现的是在img文件夹中查找哪些ID 具有图像。
谢谢
更新
$ array = array();
$foo = explode('.jpg', $images);
foreach($foo as $id) {
$digi = substr(trim($id), 0,4);
if(!in_array($digi, $array)) {
array_push($array, $digi);
echo $id . ".jpg <br/>";
$where .= "id='$digi' or ";
}
}
答案 0 :(得分:0)
首先,将您的ID字符串转换为数组。
$idsArray = explode(',', $Ids);
现在遍历目录,检查每个文件以查看它是否以ID开头。
$hasImages = array();
foreach (new DirectoryIterator(__DIR__ . '/imgs') as $fileInfo) {
if ($fileInfo->isDot() || $fileInfo->isDir()) {
continue;
}
foreach ($idsArray as $id) {
if (0 === strpos($fileInfo->getBasename(), $id)) {
$hasImages[] = $id;
break;
}
}
}
$hasImages = array_unique($hasImages);
$hasImages
将包含一个包含图像的ID数组。
答案 1 :(得分:0)
这样的事情应该有效:
$files = glob('/imgPath/*.jpg');
$hasImage = array_unique(array_map(function($file) {
return explode('-', $file)[0];
}, $files));
$withimages= array_diff(explode($Ids), $hasImage);