在PHP中调整foreach循环中的最后一次迭代

我有一个问题和答案论坛。 用户可以浏览对问题的回答并且如果他们愿意的话可以将其提升。 下面的代码输出已提升给定问题的不同用户 - 用户在$ promoters = Promotion :: find_all_promotions_for_response($ response-> response_id)行中返回的数组'$ promoters'中。 。 然后foreach循环遍历每一个并输出它们,样式由css类“启动器列表”。 问题是这个.....如果我有一个推动者,我只想要他们的名字输出(没有问题)。 但是,如果我有很多,我想在每个名称之间插入一个逗号,然后在foreach循环中输入最后一个名称之后的逗号。 直截了当的问题,但我未能实现这一点......我试图在elseif条件中添加一个计数($ promoters)行,以便如果数组$ promoters具有多个值,那么它会输出用户全名,然后输出一个逗号,但当然这个名字在错误之后也有一个逗号。 你如何识别foreach循环中的最后一次迭代,并要求它做一些与此不同的事情.....

非常感谢你们......

          <?php 
          $promoters = Promotion::find_all_promotions_for_response($response->response_id);
              if(!empty($promoters)){
              echo "<span class="promoted_by">Promoted by </span>";
              foreach($promoters as $promoter){
              echo "<span class="promoter_list">" . User::full_name($promoter->user_id) . ", </span>";
              } 
              } else {
              echo "";                
              };
           ?>   

<?php 
$promoters = Promotion::find_all_promotions_for_response($response->response_id);
if(!empty($promoters)){
    echo "<span class="promoted_by">Promoted by </span>";
    foreach($promoters as $idx=>$promoter){
        echo "<span class="promoter_list">" . User::full_name($promoter->user_id);
        if($idx < count($promoters) - 1) {
            echo ", ";
        }
        echo "</span>";
    } 
} else {
    echo "";                
}
?>

更新:

这是另一种使用@deceze建议的使用implode的方法:

<?php 
$promoters = Promotion::find_all_promotions_for_response($response->response_id);
if(!empty($promoters)){
    echo "<span class="promoted_by">Promoted by </span>";
    $htmlParts = array();
    foreach($promoters as $idx=>$promoter){
        $htmlParts[] = "<span class="promoter_list">" . User::full_name($promoter->user_id);
    } 
    echo implode(', </span>', $htmlParts) . '</span>';
} else {
    echo "";                
}
?> 
链接地址: http://www.djcxy.com/p/47805.html

上一篇: Adjusting last iteration in a foreach loop in PHP

下一篇: Combine mysql query with sub query results into one PHP array