1

私はここに非常に複雑なループを持っていますが、実際には期待どおりに機能していません。問題は、if ステートメントの else 条件がごみを生成していて、どこに問題があるのか​​よくわからないことです。

ここに画像の説明を入力

<div id="container">
    <?php include 'header.php';
    foreach ($vars as $item):



    if (is_array($item['productItems'])):?>

    <div class="product_box">
        <h4>
            <?php echo $item['title']?>
        </h4>

        <?php foreach($item['productItems'] as $products):?>

        <?php foreach($products as $key=>$product):?>


        <div class="product">

            <div class="image_holder">

                <a href="<?php echo $product['image']['medium'];?>" class="preview">
                    <img src="<?php echo $product['image']['small'];?>"
                    alt="gallery thumbnail" title="" />
                </a>


                <?php foreach($product['trackingLinks'] as $key=>$trackinglink): ?>
                <a href="<?php echo $trackinglink[0]['ppc']?>"> <span><?php echo $product['name'];?>
                </span>
                </a>
            </div>

            <h5>
                <?php echo 'Preise:&nbsp;'. $product['price'].' &nbsp;'.$product['currency'];?>
            </h5>
            <span><?php echo 'Versand Kosten:&nbsp;'.$product['shippingCosts'].'&nbsp;EUR';?>
            </span>
            <p>
                <?php echo (substr($product['descriptionLong'], 0,150 )).'<a href="'.$trackinglink[0]['ppc'].'">...mehr</a>';?>
            </p>
            <a class="shopping_button"
                href="<?php echo $trackinglink[0]['ppc']?>">zum Shop</a>



        </div>
<?php endforeach ?>
        <?php endforeach ?>
                <?php endforeach ?>

        <div class="ajax_bar">

            <select id="ajax_call" size="1" name="Weitere Produkte">
                <option value='50'>Weitere Produkte</option>
                <option value='100'>weitere 100</option>
                <option value='150'>weitere 150</option>
            </select>

        </div>

    </div>

    <?php else: ?>


    <div class="text_box">
        <h2>
            <?php echo $item['title'];?>
        </h2>
        <p>
            <?php echo $item['text'];?>
        </p>


    </div>
        <?php endif; ?>
            <?php endforeach; ?>


<?php include 'footer.php';?>

</div>
4

1 に答える 1

1

htmlspecialcharsここで大げさな推測をして、これはorを使用して出力をエスケープしないためだと言いますhtmlentities

for ループの中に何が入っているかわからない場合は、この気の利いた構造を使用してページ上でデバッグします。

echo '<pre>', htmlspecialchars(print_r($vars, true)), '</pre>';

代わりにページのソースを確認することも役立ちます。これは通常、ページ レイアウトがめちゃくちゃになっている理由について重要な手がかりを与えてくれます。

アップデート

わかりました!これは次の理由によるものです。

<?php else: ?>
<div class="text_box">
    <h2>
        <?php echo $item['title'];?>
    </h2>
    <p>
        <?php echo $item['text'];?>
    </p>

はここ$itemでは文字列であり、$item['title']PHP では:)$item[0]の最初の文字として理解されます。$item

于 2012-05-18T07:04:29.090 に答える