[英]How to avoid a trailing/extra comma when creating a comma-delimited string from array data?
我真的是 PHP 的新手,我所要做的就是获取所有选定的值并将它们打印出来,用逗号分隔它们,但是,我需要在列表中的最后一项之后删除最后一个逗号。
<?php $favoriteFruit = get_post_meta($post->ID, 'Favorite Fruit', false) ?>
<?php if ($favoriteFruit != null): ?>
<attribute key="FavoriteFruit"
value="<?php foreach($favoriteFruit as $fruit){
echo $fruit.',';
} ?>"
/>
<?php endif ?>
这个打印出列表中的所有项目并且不删除最后一个逗号。 有任何想法吗?
有两种方法可以做到这一点。 最简单的方法是使用implode()
,通过改变这个:
foreach($favoriteFruit as $fruit){echo $fruit.',';}
到:
echo implode( ',', $favoriteFruit);
另一种方法是使用rtrim()
字符串右侧的逗号,但由于您有一个数组,因此您必须自己构建字符串,如下所示:
$str = '';
foreach($favoriteFruit as $fruit){ $str .= $fruit .',';}
echo rtrim( $str, ',');
也就是说,我建议使用implode()
,因为它简单、直接。
使用逗号作为分隔符简单地分解数组怎么样:
<?php echo implode(',',$favoriteFruit);?>
只是为了好玩:因为人们指出您可以保留循环并使用rtrim
,并且 - 谢天谢地,建议不要这样做。 这是另一种不必要的复杂和荒谬的方法,它也有效:
echo vsprintf('%s'.str_repeat(',%s',(count($favoriteFruit)-1)),$favoriteFruit);
//or, the other way round:
echo vsprintf(str_repeat('%s,',(count($favoriteFruit)-1)).'%s',$favoriteFruit);
无论您做什么,都不要使用此代码。
<?php $favoriteFruit = get_post_meta($post->ID, 'Favorite Fruit', false) ?>
<?php if ($favoriteFruit != null): ?><attribute key="FavoriteFruit" value="<?php echo implode(",", $favoriteFruit);?>" /><?php endif ?>
我改变了这个:
<?php foreach($favoriteFruit as $fruit){echo $fruit.',';}?>
对此:
<?php echo implode(",", $favoriteFruit);?>
您可以使用imlpode
函数(参见http://php.net/manual/en/function.implode.php )或join
(它实际上是implode
的同义词)(参见http://www.php.net/manual/en /function.join.php )
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.