【问题标题】:How can I add a list of links to images to several dynamically generated divs (via PHP)?如何将图像链接列表添加到几个动态生成的 div(通过 PHP)?
【发布时间】:2013-01-24 07:12:05
【问题描述】:

我是 PHP 新手,我刚刚弄清楚如何从多个数组生成内容以填充 40 个 div。这是一个产品库,不同的部分是通过 for 循环生成的。每次循环时,我都使用索引不仅从数组中获取信息,而且还为整个 div 创建一个链接,我想将其用作 JQuery Lightbox 以显示每个产品的不同视图。我已经能够创建指向第一个图像的链接。我一直在尝试使用 scandir() 函数、readdir() 函数来获取每个图像的列表,但我没有任何成功。图片在文件夹中,_images/products/0/0.jpg(这个文件夹还包含1.jpg、2.jpg等。每次循环,它都会变成_images/products/1/0.jpg - 那里此文件夹中还有更多图像。我需要为每个图像创建一个链接,并将其添加到数组中,以便将不同的 Lightbox 与每个 div 链接。

$names = array ('item1', 'item2', 'item3', etc...);
$prices = array ('item1', 'item2', 'item3', etc...);
$number = array ('item1', 'item2', 'item3', etc...);
$serves = array ('item1', 'item2', 'item3', etc...);

$names_size = sizeof($names)

$img_link = "_images/products/"; // used to create the link for $div2

$div1 = "<div id=\"";
$div2 = "\" class=\"products grid_3\"><a href=\"";
$div3 = "\"><h3 class=\"name\">";
$hero_img  = "</h3><img class=\"hero\" src=\"_images/heros/";
$li_price  = "<ul><li>Price: <span class=\"price\">$";
$li_serves = "<li>Serves: <span class=\"serves\">";
$li_num = "<li>KC# <span class=\"kcnum\">";
$li_close  = "</span></li>";
$div4 = "</ul></a></div>";

for ($i = 0; $i < $names_size; $i++) {
    $div = $div1 . $names[$i] . $div2 . $img_link . $i . "/0.jpg" . $div3 .  ucwords($names[$i]) . $hero_img . $i . ".jpg\" alt=\"" . ucwords($names[$i]) . "\" />";
    $div .= $li_price . $prices[$i] . $li_close;
    $div .= $li_kc_num . $kc_no[$i] . $li_close;
    $div .= $li_serves . $serves[$i] . $li_close;
    $div .= $div4;

    echo "{$div}" . "\n";
}

我遇到的问题是,在我回显最终的 $div 之前,我需要为特定产品添加一个链接列表,以便我可以使用使灯箱适用于每个 div。我尝试在回显完成的 $div 之前插入代码(如下),但我无法继续使用它。

$gallery_array = array();

$files = scandir($img_link . $i);
    foreach($files as $file) {
        array_push($gallery_array, $file);
}

$gallery_array_size = sizeof($gallery_array);

老实说,我什至不知道 Lightbox 是否可以这样工作。有什么想法吗?

【问题讨论】:

    标签: php jquery html dynamic lightbox


    【解决方案1】:

    您不必像那样创建$div。您可以将 php 和 HTML 代码混合在一起。

    您的$gallery_array$files 相同。

    <?php
    
    $names = array ('item1', 'item2', 'item3');
    $prices = array ('item1', 'item2', 'item3');
    $kc_no = array ('item1', 'item2', 'item3');
    $serves = array ('item1', 'item2', 'item3');
    
    $names_size = sizeof($names);
    
    $img_link = "_images/products/";
    
    for ($i = 0; $i < $names_size; $i++) {
        ?>
        <div id="<?=$names[$i]?>" class="products grid_3">
            <a href="<?=$img_link.$i?>/0.jpg">
                <h3 class="name"><?=ucwords($names[$i])?></h3>
                <img class="hero" src="_images/heros/<?=$i?>.jpg" alt="<?=ucwords($names[$i])?>" />
                <ul>
                    <li>Price: <span class="price">$<?=$prices[$i]?></span></li>
                    <li>KC# <span class="kcnum"><?=$kc_no[$i]?></span></li>
                    <li>Serves: <span class="serves"><?=$serves[$i]?></span></li>
                </ul>
                <span>Gallery</span>
                <ul>
                    <?php
                        $files = scandir($img_link . $i);
                        for ($x = 2; $x < sizeof($files); $x++) {
                            echo "<li>".$files[$x]."</li>";
                        }
                    ?>
                </ul>
            </a>
        </div>
        <?php
    }
    ?>
    

    【讨论】:

    • 非常感谢!!它只是表明我必须学习多少,但是当人们花时间提供帮助时肯定会更容易!
    • 还有一个问题?当我单击每个 div 中的主链接时,它会打开一个包含所有图像的灯箱,第一个图像 (0.jpg) 出现两次。因为我已经链接到 $img_link 目录中的第一个图像(在创建容器
      之后),我可以避免在内部 for 循环中回显该文件名吗?
    • var_dump($files) 告诉你什么以及输出中的图像是什么?
    • 始终是 0.jpg 图像 — array(4) { [0]=> string(1) "." [1]=> string(2) ".." [2]=> string(5) "0.jpg" [3]=> string(5) "1.jpg" } 数组(4) { [0]=> 字符串(1) "." [1]=> 字符串(2)“..” [2]=> 字符串(5)“0.jpg” [3]=> 字符串(5)“1.jpg” }
    • for ($x = 2; $x &lt; sizeof($files); $x++) { 更改为for ($x = 3; $x &lt; sizeof($files); $x++) {
    猜你喜欢
    相关资源
    最近更新 更多
    热门标签