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


Why am I getting extra white space when I remove the last comma?

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

与往常一样,我一直在玩代码,但我无法弄清楚额外的空格来自哪里,请帮助我,我要失明了!

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

空格是由于 <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 ',';
}
?>

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

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

我宁愿这样写整个事情:

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