调用PHP函数两次,只工作一次


Calling PHP function twice, only works once

我正在尝试使用PHP关联数组将文本和图像的不同值回声到同一页面上jQuery幻灯片的不同实例的HTML中。这是HTML:

<div class='slide'>
    <div class='mosaic-block fade'>
        <div class='mosaic-overlay'>
        <div class='text'><p>This is the text!</p></div>
            </div>
        <div class='mosaic-image'><img src='imgs/the-img.png'/></div>
    </div> <!-- mosaic-block fade -->
</div> <!-- .slide --> ` 

我为每种类型的幻灯片编写了数组,其中包含每种幻灯片的文本和图像,下面是示例:

$my_content = array( 
        'image1.png' => 'image1 text!',
        'image2.png' => 'image2 text!'
        );

然后我写了一个函数,其中包含幻灯片放映类别和内容的参数:

function gallery_content($content) {
    foreach ( $content as $img => $txt ) {
    echo "<div class='slide'>
        <div class='mosaic-block fade'>
        <div class='mosaic-overlay'>
            <div class='text'><p>".$txt."</p></div></div>
            <div class='mosaic-image'><img src='imgs/other/".$img."'/></div>
        </div> <!-- mosaic-block fade -->
        </div> <!-- .slide --> ";
}

我这样称呼它:gallery_content($my_content);,它运行得非常好。但是,当我尝试为另一组值再次调用它时,似乎只有第一个实例有效。我试着直接使用数组而不是变量作为参数,并为每个幻灯片制作一个单独的函数,但一直得到相同的结果。

为什么不能多次调用函数?提前谢谢。

我的猜测是PHP正在完成它的工作。检查输出文档的来源,您应该会看到正确数量的库)。我怀疑gallery类的CSS规则,比如绝对定位它的规则,只会导致一个库可见。如果你可以使用内联CSS(这通常是不可接受的),你可以让PHP根据图库编号添加一个自定义的位置值(如顶部):

function gallery_content($content) {
    $num = 0;
    foreach ( $content as $img => $txt ) {
    echo "<div class='slide' style='top: ".(100 + 50*$num)."px'>
        <div class='mosaic-block fade'>
        <div class='mosaic-overlay'>
            <div class='text'><p>".$txt."</p></div></div>
            <div class='mosaic-image'><img src='imgs/other/".$img."'/></div>
        </div> <!-- mosaic-block fade -->
        </div> <!-- .slide --> ";
}

上面的例子给出了第一个gallery元素的顶部100px(100+50*0),第二个元素的顶部150px,tird 200px,依此类推。你也可以使用一些CSS3和新的calc()功能来代替它,但CSS3选择器是实验性的,在一些旧的浏览器中不支持。使用PHP和内联样式是最安全的选择。

查看最终页面(HTML)上生成的源代码,以判断PHP是否完成了工作。我认为这就是你得到的"galaries"(DIV)可能具有与jQuery激活它们相同的ID或其他属性,因此只有一个正确运行(第一个),第二个没有运行。

希望能有所帮助。