【问题标题】:Add a comma after each list items but only if there are more than 1 item in the list在每个列表项后添加逗号,但前提是列表中有超过 1 个项目
【发布时间】:2017-03-02 15:02:41
【问题描述】:

我有一个标签列表,用于过滤数据属性中的项目。

我为我的数组使用了 split(),但是如果列表中有多个项目,我需要添加一个逗号作为分隔符。理想情况下,这就是我希望它工作的方式。

// Senario 1 – Single item
<a href="#" data-tag="projects">Project Title</a>

// Senario 2 – More than 1 item
<a href="#" data-tag="product,commercial,housing">Project Title</a>

我当前的代码:

<?php foreach($project->tags()->split(',') as $tag): ?>
   <a href="#" data-tag="<?php echo $tag; ?>">Project</a>
<?php endforeach; ?>  

我只是不确定如何检查我是否在第一次之后完成了循环。

感谢您的帮助。

【问题讨论】:

    标签: php loops foreach split


    【解决方案1】:

    试试implode 函数。 manual

    <a href="#" data-tag="<?php echo implode(',', $project->tags()) ?>">Project</a>
    

    【讨论】:

    • 比我的方式非常简短和整洁。完全忘记了内爆功能! +1
    • 只需要一个 if 语句来检查项目标签数组的长度,如果长度为 1 则不需要 implode... 只需按原样打印标签,否则使用 implode
    • @MasivuyeCokile 即使数组中只有一个值,内爆也会起作用。它只会输出值。我认为没有必要条件
    【解决方案2】:

    在将其添加到锚点之前先构建您的字符串:

    <?php
    $result = '';
    foreach($project->tags()->split(',') as $tag) {
    
         $result .= sprintf('%s,', $tag);     
    }
    //Will remove the last character of the string.
    $result = substr($result, 0, -1);
    ?>
    
    <a href="#" data-tag="<?php echo $result; ?>">Project</a>';
    

    【讨论】:

      猜你喜欢
      • 2017-12-17
      • 2018-05-08
      • 2021-12-22
      • 2022-01-25
      • 2010-09-26
      • 2011-06-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多