繁体   English   中英

从数组数据创建逗号分隔的字符串时如何避免尾随/额外的逗号?

[英]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);

无论您做什么,都不要使用此代码。

您可以使用implode()而不是foreach()

<?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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM