PHP&;Lightbox(指向Lightbox集合最后一个文件的循环链接中的href)

PHP&;Lightbox(指向Lightbox集合最后一个文件的循环链接中的href),php,lightbox2,Php,Lightbox2,已编辑:已调试部分代码,但问题仍然存在: 下面代码的问题是,链接总是将我带到集合中的最后一个图像。我曾尝试反转照片的阵列,但没有效果。任何帮助都将不胜感激 谢谢 <?php $dir = 'pic'; $max_albums=9; $albums = array_diff(scandir($dir),array('..', '.', 'thumbs'));

已编辑:已调试部分代码,但问题仍然存在:

下面代码的问题是,链接总是将我带到集合中的最后一个图像。我曾尝试反转照片的阵列,但没有效果。任何帮助都将不胜感激

谢谢

            <?php
                $dir = 'pic';
                $max_albums=9;
                $albums = array_diff(scandir($dir),array('..', '.', 'thumbs'));

                foreach ($albums as $album) {
                    $albumdir = $dir.'/'.$album;
                    $coverdir = $albumdir.'/thumbs';

                    $thumbs = array_diff(scandir($coverdir),array('..', '.'));

                    //re-index $thumbs
                    $thumbs = array_values($thumbs);

                    //1 random cover image from each album
                    $rnd_min = 0;
                    $rnd_max = count($thumbs)-1;
                    $rnd_i = mt_rand($rnd_min, $rnd_max);
                    $covers = $thumbs[$rnd_i];
                    //re-index $covers
                    echo $rnd_i.'<br>';

                    //populate hrefs
                    $photos = array_diff(scandir($albumdir),array('..', '.', 'thumbs'));

                    //re-index $photos
                    $photos = array_values($photos);

                    foreach ($photos as $photo) {
                        echo '<a href="'.$albumdir.'/'.$photo.'" data-lightbox="'.$album.'">';
                    }
                    //display cover images
                    echo '<img src="'.$coverdir.'/'.$covers.'" class="img-responsive"></a>';
                }


            ?>

hmmm尝试反向扫描

$photos = array_diff(scandir($albumdir,1),array('..', '.', 'thumbs'));

这不是一个非常优雅的解决方案,但似乎有效:

<?php
    $dir = 'pic';
    $max_albums=9;
    $albums = array_diff(scandir($dir),array('..', '.', 'thumbs'));

    foreach ($albums as $album) {
        $albumdir = $dir.'/'.$album;
        $coverdir = $albumdir.'/thumbs';

        $thumbs = array_diff(scandir($coverdir),array('..', '.'));

        //re-index $thumbs
        $thumbs = array_values($thumbs);

        //1 random cover image from each album
        $rnd_min = 0;
        $rnd_max = count($thumbs)-1;
        $rnd_i = mt_rand($rnd_min, $rnd_max);
        $covers = $thumbs[$rnd_i];

        //populate hrefs
        $photos = array_diff(scandir($albumdir),array('..', '.', 'thumbs'));

        //re-index $photos
        $photos = array_values($photos);

        $countphoto = 0;

        foreach ($photos as $photo) {
            if ($countphoto==0) {
                echo '<a href="'.$albumdir.'/'.$photo.'" data-lightbox="'.$album.'">'."\n";
                //display cover images
                echo '<img src="'.$coverdir.'/'.$covers.'" class="img-responsive"></a>';
            }
            else {
                echo '<a href="'.$albumdir.'/'.$photo.'" data-lightbox="'.$album.'"></a>'."\n";
            }
            $countphoto++;
        }

    }


?>

因此,我在foreach($photos as$photo)循环中用一个简单的if$countphotos==0语句解决了这个问题,如果为0,它将显示缩略图,否则它将只向其他img输出锚

我还去掉了随机缩略图作为封面,只是拉了第一个缩略图

我现在要讨论另一个问题,但我将为其制作一个单独的线程


谢谢

您可以分享到这一点所做的调试工作吗?您是否在关键变量上尝试了一系列var_转储?很难说在某些地方你可能会得到什么值。我遇到的主要问题似乎与在中定义相册中的图像有关。我在$photos上运行了一个var转储,有array_reverse和没有array_reverse,并且都检查出来了……我可能不得不侵入lightbox.js,以便定义集合中的第一个img或这里有一些……现场演示:如果你是这么想的话,我已经在scandir上尝试了反向_数组,但是没有效果。所以现在我有一个新问题,当打开lightbox gallery时,它会加载场景中的img 2,然后如果我单击back箭头(在lightbox中),它会加载img 1(即img 2)。我会做一条新的线。。。