逗号分隔仅适用于前2个foreach项目?

时间:2015-02-04 22:04:07

标签: php wordpress custom-post-type

我已经创建了一个函数来显示WordPress中自定义帖子类型的分类,但是我确定问题与PHP中的某些内容有关:

function portfolio_tax($x) {
    $terms = get_terms($x);
    $count = count($terms);
    $commaCheck = 0;
    foreach($terms as $term) {
        echo $term->name;
        if(!$commaCheck >= $count){echo ', ';}
        $commaCheck++;
    }
}

然后我使用<?php portfolio_tax('category');?>(在同一页面上的2个不同位置将 category 替换为标记)将其显示在投资组合详细信息页面上。< / p>

似乎所有人都在使用max。 2项,但如果还有,,会停止显示,如下所示:

  

代码

     

海滩,Hel​​loMacro

(当 Hello &amp; Macro 之间应该有空格时)

4 个答案:

答案 0 :(得分:2)

因为你的陈述。你首先检查!$ commaCheck,默认是什么,因为$ commaCheck是0,但是你提升它。所以这将是错误的。

删除!在$ commaCheck之前或将它放在()中,如下所示:!($commaCheck >= $count) (我不知道你需要哪种逻辑。用“!”或不用。

答案 1 :(得分:1)

创建术语名称的地图。然后,您可以弹出最后一个元素,用逗号连接其余元素并重新连接弹出元素:

function portfolio_tax($x) {
    $term_names = array_map(function($t){
        return $t -> name;
    }, get_terms($x));

    $last = array_pop($term_names);
    echo implode(',', $term_names) . ' ' . $last;
}

答案 2 :(得分:0)

if($ commaCheck&gt; = $ count){echo&#39;,&#39 ;;}尝试删除&#34;!&#34;

答案 3 :(得分:0)

另一种(更简单的)方法是在每个$ term(在第一个之后)而不是之后回复逗号。在这种情况下,你只需要一个反变量而不是两个,来检查它是否是第一个元素。

function portfolio_tax($x) {
    $terms = get_terms($x);
    $commaCheck = 0;
    foreach($terms as $term) {
        if($commaCheck != 0){echo ', ';}
        echo $term->name;
        $commaCheck++;
    }
}