0

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

$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 是否可以这样工作。有任何想法吗?

4

1 回答 1

0

你不必创建一个$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
}
?>
于 2013-01-24T07:45:19.547 回答