如何在分配给帖子的类别的回声旁边添加空间:
<?php
$category_detail=get_the_category($post->ID);
foreach($category_detail as $cd)
{
echo $cd->slug;
}
?>
上面的代码打印分配给帖子的所有类别,但它会像这样打印:
category1category5
如何在打印的每个类别之间添加空格?即类别1类别5
有一些魔法:
echo $cd->slug.' ';
尝试这个
$count = 0;
foreach($category_detail as $cd)
{
//if first item, don't append space, else append space
echo ($count == 0 ? $cd->slug : ' '.$cd->slug);
$count++;
} ?>
这是另一个使用 implode 的版本:
$category_detail = get_the_category($post->ID);
$category_slug_collect = array_map(
function($obj) { return $obj->slug; },
$category_detail
);
echo implode($category_slug_collect, ' ');
我通常会做这样简单的事情:
<?php
$category_detail=get_the_category($post->ID);
$sep='';
foreach($category_detail as $cd)
{
echo "${sep}".$cd->slug;
$sep=' ';
}
?>
没有尾随或前导空格。
代码背后的逻辑是:我们将测试这是否是第一个打印的 id。如果这是第一个要打印的 id,那么我们不会做任何事情。但如果它不是第一个 id,那么我们将在打印之前打印一个空格。这样每个 id 都将由一个空格分隔,并且不会有前导或尾随空格。
代码:
<?php
$category_detail=get_the_category($post->ID);
$i = 0;
foreach($category_detail as $cd)
{
if($i)echo " ";
echo $cd->slug;
$i=1;
}
?>