【问题标题】:Remove comma on last item of foreach删除 foreach 的最后一项上的逗号
【发布时间】:2016-08-13 12:29:11
【问题描述】:

我有下一个用于单个帖子的 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 循环执行此操作时,如何从最后一个锚点中删除逗号?

感谢您的想法和帮助!

【问题讨论】:

标签: php arrays wordpress foreach


【解决方案1】:

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

<?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; ?>

【讨论】:

  • 完美运行.. 旧但有用!
【解决方案2】:

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

<?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】:

    调用函数或设置变量的成本更高?这可能是另一种方法,它设置一个变量并在最后删除有问题的字符 - 无需额外的数学运算或是否需要检查。

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

    【讨论】:

      【解决方案4】:

      你也可以用计数器试试。

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

      输出:值,值,值

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-11-24
        • 1970-01-01
        • 1970-01-01
        • 2016-07-25
        • 1970-01-01
        • 2012-12-03
        相关资源
        最近更新 更多