在PHP中显示具有相同键的图像?

时间:2014-12-29 17:09:25

标签: php

我试图用文件夹中的相同键显示所有图像。

图像的存储方式如下:

34526Image1.jpg
34526Image2.jpg
34526Image3.jpg
34526Image4.jpg
etc etc....

所以关键是图像名称的第一部分(随机数),在这种情况下是 34526

我尝试在PHP中使用glob()函数,但我只获得了34526Image1.jpg的第一张图片。

我的glob()代码是这样的:

<?php
        foreach(glob('../my-images/') as $image) 
        $i = 1;
    {   

            $pic_list .= '<a id="example1" href="'.$image.''.$randKey.'Image'.$i++.'.jpg"><img alt="example1" src="../my-images/'.$randKey.'Image'.$i++.'.jpg" /></a>'; 
    }


 echo $pic_list ; 

 ?>

有人可以就此提出建议吗?

2 个答案:

答案 0 :(得分:2)

你的foreach语句中有错误,对于你只执行1个代码行$i = 1;的文件夹中的每个文件,;之后的所有内容只执行一次,在foreach的所有迭代之后

你需要使用适当的foreach:

$files = glob('../my-images/'); // need to define proper mask here to get only files with $randKey

$i = 1;
foreach($files as $image) 
{   
    $pic_list .= '<a id="example1" href="'.$image.''.$randKey.'Image'.$i.'.jpg">';
    $pic_list .= '<img alt="example1" src="../my-images/'.$randKey.'Image'.$i.'.jpg" />';
    $pic_list .= '</a>';
    $i++;
}

答案 1 :(得分:2)

您对glob的号码不包含任何模式。您可以对*的任何字符使用通配符,或使用?使用单个字符。也可以是例如[0-9]的范围。在您的情况下,您希望所有以随机数开头的所有内容(由$randKey确定,后跟单词Image,计数器值和.jpg。因此,您所要做的就是使用通配符作为计数器值,如示例34526Image*.jpg中所示。 这导致以下代码

<?php
    $pic_list = '';
    $id = 0;
    foreach(glob('../my-images/'.$randKey.'Image*.jpg') as $image) {   
        $pic_list .= '<a id="example'.++$id.'" href="'.$image.'"><img alt="example'.$id.'" src="'.$image.'" /></a>'; 
    }
    echo $pic_list; 
?>