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

时间:2014-04-01 09:02:16

标签: php arrays foreach iteration

我有一个问答论坛。用户可以浏览对问题的回答并在他们希望的情况下进行推广。下面的代码输出了推广给定问题的不同用户 - 用户在数组' $ Promoters'从$ promoters = Promotion :: find_all_promotions_for_response($ response-> response_id)行返回; 。然后foreach循环遍历每个并通过css类"启动器列表"输出它们的样式。问题是这.....如果我有一个推动者我只想让他们的名字输出(没问题)。但是,如果我有很多,我想在每个名称之间加一个逗号,然后在foreach循环中的姓氏后面没有逗号。直截了当的问题,但我没有实现这个....我试图在elseif条件中添加一个count($ promoters)行,这样如果数组$ promoters有多个值,那么它输出用户的fullname然后是逗号,但当然姓氏后面也有一个逗号,这是错误的。你如何识别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 "";                
              };
           ?>   

1 个答案:

答案 0 :(得分:-1)

<?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 "";                
}
?>

<强>更新

这是使用{@ 1}}执行此操作的另一种方法,如@deceze所示:

implode