【发布时间】:2018-08-09 12:44:44
【问题描述】:
我有这两个数组:
$files=glob("filepath/folder/*.*);
$thumbs=glob("filepath/folder/thumbs/*.*);
$files 中调用的主文件夹获取全分辨率图像,而 thumb 具有缩略图以加快页面加载速度,因此无需加载大图像并调整它们的大小。
但我现在的问题是如何回显这两个循环? 我尝试过嵌套的 foreach 循环,例如
foreach ($files as $fl){
foreach ($thumbs as $tb) {
echo '<a href="<?=$fl?>"><img src="<?=$tb?>"></a>';
}
}
但这会产生重复,因为它会为文件中的每个元素和拇指中的每个元素回显。
如何在不重复的情况下回显它们?
【问题讨论】:
-
您有任何命名“系统”来关联全分辨率文件名和缩略图文件名吗?
-
您只能枚举一个目录(比如说缩略图),然后,对于每个图像,检查对应的文件是否存在于另一个目录中。然后才把它们放在页面上。
-
你的赋值
$thumb是单数,你的用法是复数$thumbs。我建议将所有文件数据设置为一个数组,这样您就可以将每个文件的数据放在一个子数组中,并循环每个文件。例如“file1”的索引=> 数组“file”、“thumbnail”等。然后您可以轻松检查每个文件数组是否包含所有需要的数据。事实上,数组可能有不同数量的索引,因此无法映射(例如,文件存在但缺少缩略图)。另请参阅包含示例的手册:php.net/manual/en/function.glob.php -
系统调用它们具有相同的名称。 Image1.jpg 在文件夹中,Image1.jpg 在拇指中,唯一的区别是大小。 @axiac 很有趣,我该怎么做?詹姆斯:那只是一个错字,抱歉,它们的名字是一样的。
标签: php arrays foreach echo glob