php foreach生成垃圾

时间:2012-05-18 07:00:15

标签: php foreach

我在这里有一个非常复杂的循环,我想要修改而不是按照我的预期工作。问题是:我的if语句其他条件正在生成垃圾,我真的不知道问题出在哪里

enter image description here

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

1 个答案:

答案 0 :(得分:1)

我会在这里做一个疯狂的猜测并说这是因为你没有使用htmlspecialcharshtmlentities来逃避你的输出。

如果您不确定for循环中的内容,请使用此nifty构造在页面上进行调试:

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是一个字符串,PHP将$item['title']理解为$item[0] $item的第一个字符:)