当我删除最后一个逗号时,为什么会获得额外的空格?

时间:2012-05-07 00:29:29

标签: php arrays string

我在此网站上使用了几个不同的帖子来弄清楚如何删除字符串中的最后一个逗号。显然这是一个经典的问题,但我无法弄清楚为什么它会在逗号之前添加一个额外的空白区域,而不是像人们期望的那样在逗号之后?

一如既往,我玩过代码,但我无法弄清楚额外的空白来自哪里,请帮助我,我会失明!

<?php $comma = ""; ?><?php foreach ($tags as $tag) { ?>
<?php echo $comma; ?><a href="<?php echo $tag['href']; ?>">
<?php echo $tag['tag']; ?></a><?php $comma = ","; ?>

3 个答案:

答案 0 :(得分:2)

空格是由于<a>元素打开后HTML中的换行符所致。

更好的输出方式是:

<?php
$total = count( $tags);
$x = 0;
foreach ( $tags as $tag ){
    $x++;
    echo '<a href="' . $tag['href'] . '">' . $tag['tag'] . '</a>';
    if ( $x < $total ) echo ',';
}
?>

答案 1 :(得分:2)

也许你的HTML代码中的PHP代码之间有一个空格......为什么不把它改写成这样的东西:

<?php $comma = '';
foreach ($tags as $tag) {
    echo "$comma<a href='{$tag['href']}'>{$tag['tag']}</a>";
    $comma = ',';
} ?>

答案 2 :(得分:2)

我宁愿写完整个东西:

<?php
$tag_strings = array();
foreach ($tags as $tag)
    {
    $tag_strings[] = "<a href='" . $tag['href'] . "'>" . $tag['tag'] . "</a>";
    }
echo implode(',', $tag_strings);