我正尝试在php中创建一个循环来显示类别列表。循环运行良好,sql查询会提取所有正确的信息。然而,我试图在循环每增加4次时回显一个<p>标记,这会在我的网站设计中创建新的一行。无论问题是什么,当我使用echo '<p>';回显一个p标记时,它会紧跟在后面创建一个结束标记。
下面是我的代码:
echo '<!-- Create first 4 --><P>';
while($row1 = mysql_fetch_array($result1))
{
echo '<div class="cat">';
echo '<img src="'.$row1['IMAGE'].'" alt="'.$row1['NAME'].'">';
echo '<h2>'.$row1['NAME'].'</h2>';
echo '</div>';
$i++;
//force a new line of catagories
if (( $i == 4 )||( $i == 8 )||( $i == 12 ))
{
echo '<!-- if more than 4 Close first 4 --></p>';
echo '<!-- Create second 4 --><p>';
}
}
echo '<!-- close first 4 --></p>';当它在firefox中运行时,我检查了源代码,得到的结果是:
<div class="content">
<!-- Create first 4 -->
<p></p><div class="cat"> … </div><div class="cat"> … </div><div class="cat"> … </div><div class="cat"> … </div>
<!-- if more than 4 Close first 4 -->
<p></p>
<!-- Create second 4 -->
<p></p><div class="cat"> … </div><div class="cat"> … </div><div class="cat"> … </div><div class="cat"> … </div>
<!-- if more than 4 Close first 4 -->
<p></p>
<!-- Create second 4 -->
<p> … </p></div>我需要它精确地打印echo语句中的内容。
发布于 2013-06-04 18:49:56
您可以准确地打印echo语句中的内容。然而,如果是happens to be invalid HTML,那么浏览器可能会决定“修复它”,以便有一些可用来工作。
解决问题的正确方法是用<div>标记替换<p> --这将是有效的HTML,这样浏览器就不会干扰它,您可以使用CSS适当地设置它们的样式,并获得与段落相同的视觉效果。
发布于 2013-06-04 18:53:48
这里有“模运算符”的例子:http://php.net/manual/en/language.operators.arithmetic.php你只需要检查你的循环是否是4的因子,然后执行你的代码。我还建议你大声读出你的代码的语义,你会很容易发现你的错误。
发布于 2013-06-04 18:58:13
我从您的代码中删除了不需要的代码行,并得到了以下代码:
<?php
echo "<!-- Create first 4 --><p>\n";
$i = 0;
while ($i < 14)
{
echo ' <div class="cat"></div>' . "\n";
$i++;
//force a new line of catagories
if (( $i == 4 )||( $i == 8 )||( $i == 12 ))
{
echo '<!-- if more than 4 Close first 4 --></p>' . "\n";
echo '<!-- Create second 4 --><p>' . "\n";
}
}
echo '<!-- close first 4 --></p>' . "\n";
?>结果是:
<!-- Create first 4 --><p>
<div class="cat"></div>
<div class="cat"></div>
<div class="cat"></div>
<div class="cat"></div>
<!-- if more than 4 Close first 4 --></p>
<!-- Create second 4 --><p>
<div class="cat"></div>
<div class="cat"></div>
<div class="cat"></div>
<div class="cat"></div>
<!-- if more than 4 Close first 4 --></p>
<!-- Create second 4 --><p>
<div class="cat"></div>
<div class="cat"></div>
<div class="cat"></div>
<div class="cat"></div>
<!-- if more than 4 Close first 4 --></p>
<!-- Create second 4 --><p>
<div class="cat"></div>
<div class="cat"></div>
<!-- close first 4 --></p>看起来还不错。您在代码中的其他地方遇到了这个问题。
顺便说一句。我建议用if ($i % 4 == 0)代替if (( $i == 4 )||( $i == 8 )||( $i == 12 ))
https://stackoverflow.com/questions/16915824
复制相似问题