PHP for循环输出中的HTML格式很好

时间:2012-07-09 16:27:10

标签: php html for-loop formatting

我很确定我在这里或其他地方找不到答案,或者因为我的错不能提出正确的问题,但无论如何,我说我的PHP中有一个for循环是这样的:

for($i=0; $i<3; $i++){
echo "<a href=\"\">$i</a> | ";
}

如何拨打&#34; | &#34;为了得到一个很好的输出而不出现:

<a href="">0</a> | <a href="">1</a> | <a href="">2</a>

INSTEAD OF

<a href="">0</a> | <a href="">1</a> | <a href="">2</a> | <-- remove this! :(

你们真棒!感谢!!!

如果$ i&lt; $ undefinedNumber?

9 个答案:

答案 0 :(得分:2)

保持流量,如果它不是第一个,你只需要它:

for ($i = 0; $i < 3; $i++) {
    echo $i ? " | " : '', "<a href=\"\">$i</a>";
}

第一个$i0,这意味着它是false。否则$i是一个正整数,表示true

有时找到另一种描述问题的方法有助于制定更简单的答案。而不是:

<a href="">0</a> | <a href="">1</a> | <a href="">2</a> |  /* <-- remove this! :( */

就是那个问题:

/* :( remove this! --> */ | <a href="">0</a> | <a href="">1</a> | <a href="">2</a>

相同形式的解决方案也适用于CSS:

a:not(:first-child):before {content: ' | '}

有时候这比整合PHP和HTML(Example)更容易整合 - 但是它会将|添加到链接文本或样式(至少在我测试它的chrome中,看起来有些错误)。

答案 1 :(得分:1)

for($i=0; $i<3; $i++){
   echo "<a href=\"\">$i</a>"
   if ($i != 2) {
      echo " | ";
   }
}

echo "<a href=\"\">0</a>";
for($i=1; $i<3; $i++){
   echo " | <a href=\"\">$i</a>"
}

答案 2 :(得分:1)

for($i=0; $i<3; $i++) {
    if ($i == 0) {
       echo "<a href=\"\">$i</a>;
    }
    else {
       echo " | <a href=\"\">$i</a>"
    }
}

答案 3 :(得分:1)

所以你只需要从输出中删除最后一个栏?为什么不在循环时跳过它?像这样:

for($i=0; $i<3; $i++)
{
    echo "<a href=\"\">$i</a>";

     if($i < 2)
         echo "|";
}

这样可以确保条形图仅在前两个链接后显示,而不是在第三个链接后显示。

答案 4 :(得分:1)

$output=array();
for($i=0; $i<3; $i++){
    $output[]="<a href=\"\">$i</a>";
}
$ouput=implode(' | ', $ouput);

答案 5 :(得分:1)

$arr = array();

for ($i=0; i<3; i++)
    $arr[] = "<a href=''>$i</a>";

echo implode(" | ",$arr);

更紧凑的版本:

echo implode(" | ", array_map(function($x){return "<a href=''>$x</a>";},range(1,3)));

答案 6 :(得分:1)

你也可以这样做:

for($i=0; $i<3; $i++) {
    $arr[] = "<a href=\"\">$i</a>";
}
echo implode(' | ',$arr);

答案 7 :(得分:1)

这是编程中常见的特殊情况模式。除了使用if语句或ternary operator

之外,没有内置的解决方法
for($i=0; $i<3; $i++){
    echo "<a href=\"\">$i</a>" . ($i != 2) ? " | " : "";

答案 8 :(得分:1)

不要在php中执行,在样式表中执行。

首先构建HTML

<ul class="navlinks">
     <?php foreach($links as $linkName => $linkUrl): ?>
     <li><a href="<?php echo $linkUrl; ?>"><?php echo $linkName; ?></a></li>
     <?php endforeach; ?>
</ul>

应用CSS。

.navlinks > li:after
{ 
    content:"<li>|</li>";
}

.navlinks > li:last-child:after
{ 
    content:"";
}

你永远不应该在php中设置你的HTML样式,这是正确的方法。