【问题标题】:Echo values from two foreach arrays without duplicates从没有重复的两个 foreach 数组中回显值
【发布时间】: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


【解决方案1】:

感谢大家的帮助,成功了

    $len = max(count($files), count($thumbs));
for($i=0; $i<$len; $i++){
    $fl = isset($files[$i]) ? $files[$i] : '';
    $tb = isset($thumbs[$i]) ? $thumbs[$i] : '';
    echo <a href="<?=$fl?>"><img src="<?=$tb?>"></a>;
}

【讨论】:

    猜你喜欢
    • 2011-12-27
    • 1970-01-01
    • 2023-03-17
    • 2016-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-18
    • 1970-01-01
    相关资源
    最近更新 更多