我正在尝试回显类别的一组值。我想做的是,如果有多个值,请在其后附加一个逗号。这是我所拥有的片段:
<?php foreach((get_the_category()) as $category) { echo $category->cat_name . ', '; } ?>
问题在于,具有一个值的类别的末尾将带有逗号。
答案 0 :(得分:2)
将所有值添加到数组中,然后使用implode()将它们粘合在一起:
$catArray = [];
foreach((get_the_category()) as $category) {
$catArray[] = $category->cat_name;
}
// Now we can implode the array, using , as the glue
echo implode(', ', $catArray);
您还可以在循环中添加逗号,这样就不需要任何if语句:
$glue = '';
foreach((get_the_category()) as $category) {
echo $glue . $category->cat_name;
$glue = ', ';
}
或更短的版本(虽然不易读,并且需要PHP 7 +):
foreach((get_the_category()) as $category) {
echo ($glue ?? '') . $category->cat_name;
$glue = ', ';
}
第一次迭代不会在其前面加逗号,而其余的会。
答案 1 :(得分:0)
您可以从get_the_category()
获取结果计数,设置一个计数器,并在每次循环中递增该计数。检查$i
是否等于计数,如果不等于,请不要添加逗号。
假设该函数是可计数的,并且您不需要检查以确保其结果不是0:
<?php
$count = count(get_the_categories());
$i = 1;
foreach((get_the_category()) as $category) {
if($i < $count) {
echo $category->cat_name . ', ';
} else {
echo $category->cat_name;
}
$i++;
}
?>