逗号分隔仅适用于前 2 个 foreach 项目?
Comma seperation only working on first 2 foreach items?
我创建了一个函数来显示 WordPress 中自定义 Post 类型的 分类法 ,但是我确定问题与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');?>
(在同一页面的两个不同位置用 tag 替换 category)来显示他们在投资组合详细信息页面上。
在 max. 下似乎一切正常。 2 项,但如果有更多项,,
将停止显示,如下所示:
Tags
Beach, HelloMacro
(当 Hello 和 Macro 之间应该有一个 space 时)
因为你的发言。您首先检查 !$commaCheck,默认情况下为真,因为 $commaCheck 为 0,然后您提升它。所以它会是假的。
删除!在 $commaCheck 之前或将其放在 () 中,如下所示:!($commaCheck >= $count)
(不知道你需要哪种逻辑,有没有!
if($commaCheck >= $count){echo ', ';} 尝试删除“!”
创建术语名称映射。然后,您可以弹出最后一个元素,用逗号连接其余元素,然后将弹出的元素连接回:
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;
}
另一种(更简单的)方法是在每个 $term(第一个除外)之前而不是之后回显逗号。在那种情况下,您只需要一个反变量而不是两个来检查它是否是第一个元素。
function portfolio_tax($x) {
$terms = get_terms($x);
$commaCheck = 0;
foreach($terms as $term) {
if($commaCheck != 0){echo ', ';}
echo $term->name;
$commaCheck++;
}
}
我创建了一个函数来显示 WordPress 中自定义 Post 类型的 分类法 ,但是我确定问题与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');?>
(在同一页面的两个不同位置用 tag 替换 category)来显示他们在投资组合详细信息页面上。
在 max. 下似乎一切正常。 2 项,但如果有更多项,,
将停止显示,如下所示:
Tags
Beach, HelloMacro
(当 Hello 和 Macro 之间应该有一个 space 时)
因为你的发言。您首先检查 !$commaCheck,默认情况下为真,因为 $commaCheck 为 0,然后您提升它。所以它会是假的。
删除!在 $commaCheck 之前或将其放在 () 中,如下所示:!($commaCheck >= $count)
(不知道你需要哪种逻辑,有没有!
if($commaCheck >= $count){echo ', ';} 尝试删除“!”
创建术语名称映射。然后,您可以弹出最后一个元素,用逗号连接其余元素,然后将弹出的元素连接回:
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;
}
另一种(更简单的)方法是在每个 $term(第一个除外)之前而不是之后回显逗号。在那种情况下,您只需要一个反变量而不是两个来检查它是否是第一个元素。
function portfolio_tax($x) {
$terms = get_terms($x);
$commaCheck = 0;
foreach($terms as $term) {
if($commaCheck != 0){echo ', ';}
echo $term->name;
$commaCheck++;
}
}