-1

我对 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 ?>

这个打印出列表中的所有项目并且不会删除最后一个逗号。有任何想法吗?

4

4 回答 4

5

有两种方法可以做到这一点。最简单的方法是使用implode(), 通过改变这个:

foreach($favoriteFruit as $fruit){echo $fruit.',';}

到:

echo implode( ',', $favoriteFruit);

另一种方法是使用rtrim()从字符串右侧修剪逗号,但由于您有一个数组,您必须自己形成字符串,如下所示:

$str = '';
foreach($favoriteFruit as $fruit){ $str .= $fruit .',';} 
echo rtrim( $str, ',');

话虽如此,我建议使用implode()它,因为它简单、简单、直接。

于 2012-06-25T13:53:16.197 回答
2

使用逗号作为分隔符简单地对数组进行内爆怎么样:

<?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);

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

于 2012-06-25T13:54:06.190 回答
1

您可以使用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);?>
于 2012-06-25T13:53:12.753 回答
0

您可以使用imlpode函数(参见http://php.net/manual/en/function.implode.php)或join(实际上是 的同义词implode)(参见http://www.php.net/manual/en/function.加入.php )

于 2012-06-25T13:55:16.230 回答