关闭div以在foreach循环上正确打印

时间:2013-08-09 09:40:33

标签: php json twitter-bootstrap curl

我正在将json对象中的一些项目打印到网格中,并且我正在尝试在正确的位置打印出结束div标签,但它缺少了'row-fluid'的结束div。我的代码是:

<?php
    require_once('includes/header.php');
?>
<div id="content" class="row-fluid">
    <?php
    if (!isset($session['items'])) {
        $curl_handle = curl_init();
        curl_setopt($curl_handle, CURLOPT_URL, 'http://www.behance.net/v2/users/andrewwelch/projects?api_key=n1LTMZFd9zez1j6jLFYBA7GyWFewPsrb');
        curl_setopt($curl_handle, CURLOPT_CONNECTTIMEOUT, 2);
        curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($curl_handle, CURLOPT_USERAGENT, 'Your application name');
        $query = curl_exec($curl_handle);
        curl_close($curl_handle);
        $projects = (json_decode($query));
    } else {
       $projects = $session['items'];
    }
    ;
    $i = 0;
    foreach (reset($projects) as $value) {
        if ($i == 0) {
            print '<div class="row-fluid">';
        }
        if (($i % 4) == 0) {
            print '<div class="row-fluid">';
        }
        print '<div class="span3" style="height:200px;">';
        $covers = (Array) $value->covers;
        print '<img src="' . reset(array_slice($covers, '1')) . '"/>';
        print '<span class="thumb_title">' . $value->name . '</span>';
        print '</div>';
        if (($i % 4) == 4) {
        print '</div>';
        }
        $i++;
    }
    ?>
</div>
</div>
</div> <!-- /container -->
</body>
</html>

4 个答案:

答案 0 :(得分:1)

($i % 4) == 4)

永远不会是真的。 Mod 4将返回0,1,2或3。

答案 1 :(得分:1)

试试这个,

<?php
    $i = 0;
    foreach (reset($projects) as $value) {
        print '<div class="row-fluid">';
        print '<div class="span3" style="height:200px;">';
        $covers = (Array) $value->covers;
        print '<img src="' . reset(array_slice($covers, '1')) . '"/>';
        print '<span class="thumb_title">' . $value->name . '</span>';
        print '</div>';
        if (($i++%4) == 0) {
            print '</div><div class="row-fluid">';
        }
    }
    if(($i%4) != 0)// if in case the the loop not end the div tag
        print '</div>';
?>

答案 2 :(得分:1)

您不需要if内的第一个foreach,第二个if已经处理了这个条件。您应该删除它,因为在循环开始时添加额外的开放div

其次,吉姆指出($i % 4) == 4)将永远不会成真。你想做($i % 4) == 0)

尝试以下方法:

$i = 0;
foreach (reset($projects) as $value) {
    if (($i % 4) == 0) {
        print '<div class="row-fluid">';
    }
    print '<div class="span3" style="height:200px;">';
    $covers = (Array) $value->covers;
    print '<img src="' . reset(array_slice($covers, '1')) . '"/>';
    print '<span class="thumb_title">' . $value->name . '</span>';
    print '</div>';
    if (($i % 4) == 0) {
        print '</div>';
    }
    $i++;
}

更新:

看到OP的期望输出后:

$i = 0;
foreach($projects as $value) {
    if ($i % 4 == 0) {
        if ($i != 0) {
            print "</div>";
        }
        print '<div class="row-fluid">';
    }

    print '<div class="span3" style="height:200px;">';
    $covers = (Array) $value->covers;
    print '<img src="' . reset(array_slice($covers, '1')) . '"/>';
    print '<span class="thumb_title">' . $value->name . '</span>';
    print '</div>';

    $i++;
}
print "</div>";

答案 3 :(得分:1)

if (($i % 4) == 0)

这将有效。