删除foreach最后一项的逗号

时间:2016-04-20 16:55:02

标签: php arrays wordpress foreach

我有单个帖子的WordPress标签循环的下一个代码:

<?php if ($tags) : foreach($tags as $tag): ?>
<a href="<?php echo get_tag_link($tag); ?>">
    <?php echo $tag->name; ?>
</a>, 
<?php endforeach; endif; ?>

我将逗号添加到最后一个锚点。逗号后还有空格。

当我使用foreach()PHP循环执行此操作时,如何从最后一个锚中删除逗号?

感谢您的想法和帮助!

4 个答案:

答案 0 :(得分:3)

检查你的循环是否在最后一个循环中运行:

<?php if ($tags) : ?>
    <?php $count = count($tags); ?>
    <?php foreach($tags as $i => $tag): ?> 
        <a href="<?php echo get_tag_link($tag); ?>">
            <?php echo $tag->name; ?>
        </a>
        <?php if ($i < $count - 1) echo ", "; ?>
    <?php endforeach; ?>
<?php endif; ?>

答案 1 :(得分:2)

什么是更高的成本,调用函数或设置变量?这可能是另一种方法,它设置一个变量并在结尾删除有问题的字符 - 没有额外的数学或者需要检查。

<?php
  $tagoutput = '';
  if ($tags) {    
    foreach ($tags as $tag)
      $tagoutput .= '<a href="' . get_tag_link($tag) . '">' . $tag->name . '</a>, ';
    $tagoutput = rtrim($tagoutput, ', ');
  }
  echo $tagoutput;
?>

答案 2 :(得分:1)

你可以反过来做(从第一个中删除它)。如果您的数组是数字,您可以尝试这样的事情:

<?php if ($tags): ?>
    <?php foreach ($tags as $key => $tag): ?>
        <?php if ($key > 0): ?>,<?php endif ?>
        <a href="<?php echo get_tag_link($tag); ?>">
            <?php echo $tag->name; ?>
        </a>
    <?php endforeach ?>
<?php endif ?>

答案 3 :(得分:0)

您也可以使用计数器尝试。

$values = array('value','value','value');
        $count = count($values);
        $i = 0;
        foreach($values as $value){
            $i++;
            echo $value;
        if($count > $i){
            echo ', ';
        }
    }

输出:值,值,值