【问题标题】: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 ', ';
}
}
输出:值,值,值