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
            }
        }
    }
?>

これにより画像は正しく出力されますが、「写真数」は増加せず、各写真は「最初の写真クラス」(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>
4

1 に答える 1

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 ずつインクリメントされます。foreachやのような PHP の内部構造を自由に使用emptyすることもできました。使用方法についてはマニュアルを参照してください。

ロジックがなく、null/false ではないためJPATH_ROOT.'/images/'.$row->id.'/medium/'.$photo->image、常に true を返しますfile_exists

!$photoclassの代わりに使用する!isSet($photoclass)と、未定義の変数通知がスローされます。

于 2013-11-10T18:34:29.883 に答える