用逗号分隔的税项,最后一项前加“和”

时间:2017-01-16 作者:Xav

我有一个叫做“位置”的分类法。我正在为一篇文章输出这些分类术语的逗号分隔列表。这很好,但我不知道如何用“and”而不是逗号分割倒数第二项和最后一项。

这是我的密码。有没有办法用计数器来做呢?

$locations = get_the_terms($post->ID, \'location\');

$locations = array_values($locations);
for($cat_count=0; $cat_count<count($locations); $cat_count++) {

  echo $locations[$cat_count]->name;

  if ($cat_count<count($locations)-1){
    echo \', \';
  }

}
注意:此代码位于类别存档模板的侧栏中,位于WP\\U查询中,因此都在循环中。WP\\u查询正在输出多个名为Projects的自定义帖子类型的帖子,我正在尝试列出每个帖子的位置税术语。

2 个回复
最合适的回答,由SO网友:Shibi 整理而成

这就是我添加了一些注释的代码外观,这样您就可以理解它的简单编程,而不是真正与wordpress相关。

$locations = get_the_terms($post->ID, \'location\');
$locations = array_values($locations);

$total_locations = count($locations); // the total start from 1

for($i = 0; $i < $total_locations; $i++) {

    echo $locations[$i]; // echo the location

    if($i < $total_locations-2) { // so for comma you need to check if the for loop variable is - 2 because the loop start from 0
        echo \', \'; // echo comma
    } elseif($i < $total_locations-1) { // and here is just -1 because you want to print it before the last one because this we use the less than sign in both of our conditions 
        echo \' and \'; // echo and
    }
}

SO网友:KAGG Design

您应该将代码中回显逗号的片段替换为以下内容:

if ($cat_count<count($locations)-2) {
  echo \', \';
}
if ($cat_count=count($locations)-2) {
  echo \'and \';
}
这将在数组的所有元素之后输出逗号,除了最后一个元素和前一个元素。

数组中的元素具有从0到“count($locations)-1”的索引。

上一个元素的索引计数为($位置)-2。在此元素之后,代码输出“and”。

相关推荐

什么时候应该/不应该使用wp_get_post_Terms与Get_the_Terms?

一位用户在codex中提供了一条注释,指出唯一的区别是get\\u术语使用缓存的数据,我已经知道wp\\u get\\u post\\u术语可以让您通过slug检索数据,但我仍然想知道使用其中一个与另一个的最佳情况是什么。