【问题标题】:How to avoid a trailing/extra comma when creating a comma-delimited string from array data?从数组数据创建逗号分隔的字符串时如何避免尾随/额外的逗号?
【发布时间】:2012-06-26 18:45:30
【问题描述】:

我真的是 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 ?>

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

【问题讨论】:

    标签: php xml arrays wordpress list


    【解决方案1】:

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

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

    收件人:

    echo implode( ',', $favoriteFruit);
    

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

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

    话虽如此,我还是推荐使用implode(),因为它简单、简单、直接。

    【讨论】:

    • "我会推荐使用explode()"...错别字?
    • 第三个选项...在水果之前显示逗号,除非它是数组中的第一个条目
    【解决方案2】:

    如何简单地使用逗号作为分隔符来分解数组:

    <?php echo implode(',',$favoriteFruit);?>
    

    只是为了好玩:因为人们指出你可以保持循环并使用rtrim,并且-thankfuly,建议不要这样做。这是另一种不必要的复杂和荒谬的方法,也有效:

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

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

    【讨论】:

      【解决方案3】:

      您可以使用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);?>
      

      【讨论】:

        【解决方案4】:

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

        【讨论】:

        • 最佳使用内爆,因为它的对应物explode 没有贬值,也不依赖正则表达式,不像split。此外,join 和 split 让我想起了 JavaScript,一种需要不同编码方法的语言,最好将这两个世界分开,恕我直言
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-09-13
        • 2020-09-12
        • 1970-01-01
        • 2020-12-27
        • 1970-01-01
        • 2010-09-17
        • 1970-01-01
        相关资源
        最近更新 更多