【问题标题】:Line Break within echo in a while loop在while循环中的回声中换行
【发布时间】:2009-12-04 07:05:35
【问题描述】:

再次快速提问,我确信这非常简单,但我看不出我做错了什么!

while ($row = mysql_fetch_array($result, MYSQL_ASSOC))

{
echo  "<a href=\"http://mysite.com/{$row['row1']}/{$row['row2']} \">{$row['row3']} </a>";
}

这会使我的所有链接一个接一个地堆叠起来。我想把它们放在一个列表中,所以我试过了:

echo "<ul>";

while ($row = mysql_fetch_array($result, MYSQL_ASSOC))

{
echo  "<li><a href=\"http://mysite.com/{$row['row1']}/{$row['row2']} \">{$row['row3']}    </a> </li>";
}
echo "</ul>" ;

while ($row = mysql_fetch_array($result, MYSQL_ASSOC))

{
echo  "<a href=\"http://mysite.com/{$row['row1']}/{$row['row2']} \">{$row['row3']}    </a> <br />";
}

我希望看到的最终结果是:
-链接 1
-链接 2
-链接 3
-链接 4
我究竟做错了什么?提前致谢!

【问题讨论】:

  • 你的第二个例子看起来不错。你能告诉我们最终的 HTML 输出吗?
  • 你能给出一个输出希望它如何显示吗?
  • 我基本上只是希望它看起来像 -Link 1 -Link 2 -Link 3 等。至于 HTML 输出,它现在所做的只是 的继承站点名称站点名称站点名称等,所有换行或列出它们的尝试都失败了!
  • 抱歉,我认为在每个 -Link 1 -Link 2 等之间按回车键会起作用,但它应该是 -Link 1
    -Link 2
    -Link3
    等。 !
  • 奇怪的是,标签消失了,但是当我查看源代码时,我可以看到
    标签的效果。在源代码中,所有链接都有一个换行符,因此就像我的示例一样,彼此重叠显示,但没有实际标签的痕迹。在其他地方测试它证明初始代码很好,但由于某种原因有些东西正在剥离标签。感谢您的帮助!

标签: php loops echo while-loop line-breaks


【解决方案1】:

我看不出有什么问题。即使是&lt;br/&gt; 也应该可以工作:

while ($row = mysql_fetch_array($result, MYSQL_ASSOC))
{
echo  "<a href=\"http://mysite.com/{$row['row1']}/{$row['row2']} \">{$row['row3']} </a><br/>";
}

【讨论】:

  • 糟糕,抱歉,我的第三个示例应该是这样。我也尝试过这个,但仍然无济于事。如果这有帮助的话,更奇怪的是,当我查看页面的这个区域时,添加
    会影响我的源的链接对齐方式。基本上,我没有看到
    标签,而是看到它的效果被应用到源中,创建了想要的留置权中断但在网站本身上不可见?!
【解决方案2】:

使用echo "&lt;a href="…&gt;link&lt;/a&gt;\n在生成的源代码中添加换行符

【讨论】:

  • 试过了,也无济于事:(
【解决方案3】:

试试这个

while ($row = mysql_fetch_array($result, MYSQL_ASSOC))
{
$layout .= "<div style='display:block;'><a href=\"http://mysite.com/{$row['row1']}/{$row['row2']} \">{$row['row3']}</a></div>";
}

echo $layout;

【讨论】:

  • 非常好的主意,仍然没有结果。它实际上堆叠了我所有的链接,它们之间甚至没有空格!
  • 我仍然对你喜欢如何显示结果感到困惑。
【解决方案4】:

对于 HTML 中的换行符,请尝试使用 &lt;br /&gt;,您的代码可能类似于以下行:

echo "<ul>";
while ($row = mysql_fetch_array($result, MYSQL_ASSOC))

{ 
echo  "<li><a href=\"http://mysite.com/{$row['row1']}/{$row['row2']} \">{$row['row3']}</a></li> <br />";
}
echo "</ul>";

编辑

还请注意,正如之前在 cmets 中提到的,不需要 &lt;br /&gt;,如果我将其从代码中取出,我的输出将保持不变。

我做了一个类似的测试 php 文件并使用了我上面的建议并且工作正常,这是我的代码

<?php
echo "<ul>";
$i = 0;
do {
$i++;
echo  "<li><a href=\"http://mysite.com/{$i}/{$i} \">{$i}</a></li> <br />";
} while($i < 10);
echo "</ul>";
?>

如下所示:

【讨论】:

  • 不反对,但是当使用&lt;ul&gt;&lt;li&gt;...&lt;/li&gt;&lt;li&gt;&lt;/li&gt;&lt;/ul&gt; 时,您应该不需要&lt;br /&gt;
  • &lt;li&gt; 在这种情况下没有意义(没有&lt;ul&gt;&lt;ol&gt; 无效)
  • 当然有道理:它是一个链接列表,所以&lt;li&gt;(在&lt;ul&gt;&lt;ol&gt;内)是唯一的 语义正确的写法。
  • 对不起大家,我编辑了我的原始帖子,我并不是要在第三个示例中使用
  • ,因为我只是尝试将其作为
    ,看到
    选项无效!
  • 我应该使用
  • AND a
    吗?
  • 猜你喜欢
    相关资源
    最近更新 更多
    热门标签