Php 仅当有多个值时才在值后添加逗号?
我试图回显类别的一组值。我想做的是,如果有多个值,在后面加一个逗号。以下是我的一段经历:Php 仅当有多个值时才在值后添加逗号?,php,Php,我试图回显类别的一组值。我想做的是,如果有多个值,在后面加一个逗号。以下是我的一段经历: <?php foreach((get_the_category()) as $category) { echo $category->cat_name . ', '; } ?> 这样做的问题是,具有一个值的类别的末尾将有一个逗号。您可以从get\u The\u category()中获取结果计数,设置计数器并在每次循环中递增。检查$i是否等于计数,如果等于,则不要添加逗号 假设该函数
<?php foreach((get_the_category()) as $category) { echo $category->cat_name . ', '; } ?>
这样做的问题是,具有一个值的类别的末尾将有一个逗号。您可以从
get\u The\u 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++;
}
?>
备选方案1
将所有值添加到数组中,然后仅使用将它们粘合在一起:
$catArray = [];
foreach((get_the_category()) as $category) {
$catArray[] = $category->cat_name;
}
// Now we can implode the array, using , as the glue
echo implode(', ', $catArray);
备选案文2
您还可以在循环中预加逗号,这样就不需要任何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 = ', ';
}