0

我正在将 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

4 回答 4

1
($i % 4) == 4)

从来都不是真的。Mod 4 将返回 0,1,2 或 3。

于 2013-08-09T09:43:23.833 回答
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>';
?>
于 2013-08-09T09:45:19.193 回答
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>";
于 2013-08-09T09:48:04.243 回答
1
if (($i % 4) == 0)

这会奏效。

于 2013-08-09T09:54:10.343 回答