2015-08-27 279 views
0

即时通讯尝试使用foreach循环与插件fotorama。foreach循环fotorama

即时消息试图做的是加载主图库图像的一半大小的图像。我在foreach中工作,但我想使用完整的图像数据满标记,但我不能让它工作。

这是工作代码。

<div class="fotorama" 
       data-allowfullscreen="native" 
       data-nav="thumbs" 
       data-fit="scaledown" 
       data-width="100%" 
       data-height="100%" 
       data-arrows="true" 
       data-click="true" 
       data-swipe="true"> 
       <?php 
         $dirname = "admin/image-upload/uploads/"; 
         $images = glob($dirname."*.*"); 
         foreach($images as $image) { 
         echo '<img src="'.$image.'" /><br />'; 
         } 
       ?> 
      </div> 

这就是我试图做的。

<div class="fotorama" 
       data-allowfullscreen="native" 
       data-nav="thumbs" 
       data-fit="scaledown" 
       data-width="100%" 
       data-height="100%" 
       data-arrows="true" 
       data-click="true" 
       data-swipe="true"> 
       <?php 
         $dirname = "admin/image-upload/uploads/"; 
         $images = glob($dirname."*.*"); 
         $dirname2 = "admin/image-upload/full/"; 
         $images2 = glob($dirname2."*.*"); 
         $fullImgs = "<img data-full=".$image2." src=".$image." /><br />"; 
         foreach($fullImgs as $fullImg) { 
         echo $fullImg; 
         } 
       ?> 


      </div> 

在先进的感谢球员

+0

$ images和$ images 2都是数组,但是您只分配一次$ fullImgs的值 - 所以您的foreach只会运行一次。 –

+0

当然,你不希望这两件事发生在同一个地方,即使他们都工作 – RiggsFolly

回答

0

试试这个:

$dirname = "admin/image-upload/uploads/"; 
$images = glob($dirname."*.*"); 
$dirname2 = "admin/image-upload/full/"; 
$images2 = glob($dirname2."*.*"); 
$array = array_merge($images, $images2); 

// Supossing both array have same length 
$length = count($images); 
for($i = 0; $j = $length; $i < $length; $i++, $j++) { 
    echo '<img data-full=".$images2[$j]." src=".$images[$i]." /><br />'; 
} 
0

我想你想要的是这样的:

<?php 
    $dirname = "admin/image-upload/uploads/"; 
    $images = glob($dirname."*.*"); 
    $dirname2 = "admin/image-upload/full/"; 
    $images2 = glob($dirname2."*.*"); 
    //assuming $images and $images2 are the same length... 
    foreach ($images as $k => $v) { 
    echo "<img data-full=".$images2[$k]." src=".$v." /><br />"; 
    } 
?> 

没有测试,但应该给这个想法...

0

您的代码不会像这样工作。如果我正确地理解了你,你可以在两个不同的目录中以大小格式显示相同的图像。要将它们显示为一对,您需要在这两个文件之间建立连接 - 因为您的脚本应该如何知道哪些图像属于一起?你可以使用数据库,但在你的情况下,我认为在文件名中建立连接更容易。例如,名称为小图像

Image_7263.png Image_0172.png

等都在目录中的图片。对于大图像,只需将_BIG附加到名称的末尾即可。

然后你使用你的foreach循环遍历小图像的目录。对于那里的每个图像,您将_BIG附加到文件名的末尾,并将其从大目录的目录中包含。

$smallImages = glob ("/path/to/small/images/*.*"); 

foreach ($smallImages as $img) 
{ 
$name = substr ($img, 0, strlen ($img)-4); //Remove the .png or .jpg 
$bigImg = "/path/to/big/images/".name."_BIG.jpg"; // or whatever image type you are using 
echo "<img data-full=\"".$bigImg."\" src=\"".$img."\" /> 
}