如何正确循环这些图片

时间:2013-11-10 18:27:26

标签: php foreach joomla3.0

我确信这是PHP的一个简单原则,但它是我尚未学习的原则。原则上代码有效:

<?php
    for($i=0;$i<count($photos);$i++){
        if($photos[$i]->image != ""){
            if(JPATH_ROOT.'/images/'.$row->id.'/medium/'.$photos[$i]->image){
                if(!$photocount) {
                    $photocount = $photocount + 1;
                    $photoclass = "property_photo_main property_photo_main_" . $photocount; // First Photo Class
                }
                ?>
                <img src="<?php echo JURI::root()?>images<?php echo $row->id;?>/medium/<?php echo $photos[$i]->image?>" class="<?php echo $photoclass; ?>" alt="<?php echo $photos[$i]->image_desc;?>" title="<?php echo $photos[$i]->image_desc;?>"/>
                <?php
            }
        }
    }
?>

正确输出图像,然而&#34;照片计数&#34;没有增加,因此每张照片都得到了第一张照片类&#34; (property_photo_main_1)。我完全理解这里的问题是因为计数不在打印每张照片的循环中,但是因为它直接在图像输出之前,循环在哪里,我如何实现计数增加?

HTML输出是:

                <img src="http://msa.eighttwentydesign.com/images/osproperty/properties/5/medium/51384100282240dc03c72cb44ce05eb9e56021d0c05.jpg" class="property_photo_main property_photo_main_1" alt="" title=""/>
                                    <img src="http://msa.eighttwentydesign.com/images/osproperty/properties/5/medium/51384100283f9f748ca556070c2d09553298dc26d8f.jpg" class="property_photo_main property_photo_main_1" alt="" title=""/>
                                    <img src="http://msa.eighttwentydesign.com/images/osproperty/properties/5/medium/51384100283b280e25f329d8cf1518bda4700b07765.jpg" class="property_photo_main property_photo_main_1" alt="" title=""/>
                                    <img src="http://msa.eighttwentydesign.com/images/osproperty/properties/5/medium/51384100283c801f9afb73308c7fd77a77ea00129bb.jpg" class="property_photo_main property_photo_main_1" alt="" title=""/>
                </div>

1 个答案:

答案 0 :(得分:1)

如果不是,那么你永远不会增加$photocount。您也永远不会重置$photoclass

foreach ($photos as $photo) {
    if (!empty($photo->image)) {
        if (JPATH_ROOT.'/images/'.$row->id.'/medium/'.$photo->image) {

            if (!isSet($photocount))
                $photocount = 1;
            else
                $photocount++;

            $photoclass = "property_photo_main property_photo_main_" . $photocount;
            //HTML...
        }
    }
}

这种方式$photoclass在每次迭代中都会重置,如果已经设置,$photocount也会增加1。我也冒昧地使用PHP的内部结构,如foreachempty,您可以阅读手册中的用法。

由于JPATH_ROOT.'/images/'.$row->id.'/medium/'.$photo->image没有逻辑而且不是null / false,它总是返回true,也许你想使用像file_exists这样的东西?

使用!$photoclass代替!isSet($photoclass)会抛出未定义的变量通知。