首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP echo ' <p>‘打印<p> </p>

PHP echo ' <p>‘打印<p> </p>
EN

Stack Overflow用户
提问于 2013-06-04 18:46:05
回答 3查看 10.9K关注 0票数 1

我正尝试在php中创建一个循环来显示类别列表。循环运行良好,sql查询会提取所有正确的信息。然而,我试图在循环每增加4次时回显一个<p>标记,这会在我的网站设计中创建新的一行。无论问题是什么,当我使用echo '<p>';回显一个p标记时,它会紧跟在后面创建一个结束标记。

下面是我的代码:

代码语言:javascript
复制
        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中运行时,我检查了源代码,得到的结果是:

代码语言:javascript
复制
    <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语句中的内容。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-06-04 18:49:56

您可以准确地打印echo语句中的内容。然而,如果是happens to be invalid HTML,那么浏览器可能会决定“修复它”,以便有一些可用来工作。

解决问题的正确方法是用<div>标记替换<p> --这将是有效的HTML,这样浏览器就不会干扰它,您可以使用CSS适当地设置它们的样式,并获得与段落相同的视觉效果。

票数 3
EN

Stack Overflow用户

发布于 2013-06-04 18:53:48

这里有“模运算符”的例子:http://php.net/manual/en/language.operators.arithmetic.php你只需要检查你的循环是否是4的因子,然后执行你的代码。我还建议你大声读出你的代码的语义,你会很容易发现你的错误。

票数 0
EN

Stack Overflow用户

发布于 2013-06-04 18:58:13

我从您的代码中删除了不需要的代码行,并得到了以下代码:

代码语言:javascript
复制
<?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";
?>

结果是:

代码语言:javascript
复制
<!-- 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 ))

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16915824

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档